如何将用户重定向到ACS默认登录页面

我在我的Web应用程序中使用azure Access Control System (ACS)来validation来自不同身份提供商的用户。 我成功注册了我的应用程序以使用ACS。 现在我通过从web.config文件中删除以下内容来删除我对ACS的完整网站安全性:

    

删除后,我的用户无需登录即可访问我的网站主页。 现在在我的主页上我设置了一个链接SignIn我想知道当用户点击SignIn链接时,如何将用户重定向到ACS默认登录页面?类似地,当asp.net应用程序将用户重定向到ACS登录页面时,如果用户未经过身份validation并尝试访问由Authorize属性修饰的控制器

您可以使用SignInRequestMessage类手动构造URL,也可以调用

FederatedAuthentication.WSFederationAuthenticationModule.RedirectToIdentityProvider()(IIRC)。

以下代码将重定向到联合帐户登录页面:

 public class AccountController : Controller { public ActionResult SignIn(string returnUrl) { if (String.IsNullOrEmpty(returnUrl)) { returnUrl = Url.Content("~/"); } var signInRequest = FederatedAuthentication.WSFederationAuthenticationModule.CreateSignInRequest( "passive", returnUrl, FederatedAuthentication.WSFederationAuthenticationModule.PersistentCookiesOnPassiveRedirects); return Redirect(signInRequest.RequestUrl); } // SignOut, SignOutCallback below from typical MVC template } 

另外 – 我相信WIF包含一个控件 ,可以显示该登录链接

这是我在MVC应用程序中完成的方式。

允许用户在web.cofig中使用此声明访问所有未受保护的页面:

       

在我的Logon方法上使用RequireHttps属性:

 [HttpGet] [RequireHttps] public ActionResult LogOn(string returnUrl) { if (string.IsNullOrWhiteSpace(returnUrl)) returnUrl = "/reports"; return LogOnCommon(returnUrl); } 

并使用web.config的身份validation部分,其中我的登录页面是: