我有一个要实现声明支持的MVC3应用程序。我的目标如下:
提供一个登录链接,单击该链接会显示一个带有用户名/密码和Facebook / WindowsLive / Google等的弹出窗口。
当访问受保护的控制器时,系统会自动重定向到我的登录页面。 /订购/删除
我已经在AppFabricLabs.com中设置了应用程序和提供程序,并将STS包含在我的项目中。我还创建了IAuthorizationFilter的实现,因此可以将控制器标记为[WifAuth],并成功调用OnAuthorization方法。我已经实现了用例,其中访问者尚未经过身份验证,如下所示:
private static void AuthenticateUser(AuthorizationContext context)
{
var fam = FederatedAuthentication.WSFederationAuthenticationModule;
var signIn = new SignInRequestMessage(new Uri(fam.Issuer), fam.Realm);
context.Result = new RedirectResult(signIn.WriteQueryString());
}
并成功获取带有我的身份提供者选择的AppFabricLabs页面(尚未弄清楚如何自定义该页面)。当我登录时,returnUrl被调用,因此我进入了控制器方法/ Home / FederationResult,但是发布给我的表单仅包含wa和wresult字段,但是我需要wctx才能知道将用户发送到哪里...我还没有能够找出原因。
该结果是一个XML文档,其中包含(除其他外,还有许多其他信息)登录用户的名称和电子邮件地址,但令人遗憾的是,其中不包含用户所访问的URL。
我无法配置某些东西还是刚离开基地?有人在想吗?
Ë
最佳答案
只需为SignInRequestMessage
指定一个上下文:
signIn.Context = HttpContext.Current.Request.RawUrl;
wctx
参数包含在每个请求/响应中,并且是最终发布到您网站的表单的一部分。