3

我有一个想要实现声明支持的 MVC3 应用程序。我的目标如下:

  1. 提供一个登录链接,单击该链接会显示一个带有用户名/密码和 Facebook/WindowsLive/Google 等链接的弹出窗口

  2. 访问受保护的控制器时自动重定向到我的登录页面,例如 /Order/Delete

我已经在 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,但是发布给我的表单只包含wawresult字段,但我需要wctx知道将用户发送到哪里......我没有能够弄清楚为什么。

wresult是一个 XML 文档,其中包含(在无数其他事物中)登录用户的姓名和电子邮件地址,但遗憾的是不包含用户前往的 url。

我是否未能配置某些东西,或者我只是不在基地?任何人的想法?

  • e
4

1 回答 1

3

只需为 Context 指定SignInRequestMessage

signIn.Context = HttpContext.Current.Request.RawUrl;

wctx参数包含在每个请求/响应中,也是最终发布到您网站的表单的一部分。

于 2011-07-21T22:42:24.403 回答