【问题标题】:MVC and OpenID Redirection ProblemsMVC 和 OpenID 重定向问题
【发布时间】:2008-12-01 23:32:59
【问题描述】:

当我得到 AuthenticationStatus.Authenticated(DotNetOpenId 库) 来自 myopenid 提供商的响应,我想从登录页面重定向用户 使用 MVC Redirect(myurl) 到另一个。但不幸的是,而不是 进入 myurl,用户被重定向到空白页面:

myurl?token=AWSe9PSLwx0RnymcW0q....(+ 几千字节 myopenid 特定的查询字符串)

我也尝试过 FormsAuthentication.RedirectFromLoginPage(),但它会重定向 再次返回原始登录页面,而不是 myurl。

有人可以建议正确重定向到 myurl 吗?

谢谢

【问题讨论】:

    标签: asp.net-mvc redirect openid


    【解决方案1】:

    首先你应该设置授权cookie:

    FormsAuth.SetAuthCookie(UserName, RememberMe);
    

    在此之后你应该返回 RedirectToAction 结果:

    return RedirectToAction(actionName, controllerName);
    

    或重定向结果:

    return Redirect(url);
    

    当你使用“return Redirect(url);”时它使用 Response.Redirect(url, false) 方法进行重定向,因此它必须工作。可能是您没有返回此操作结果,请检查此。 “FormsAuthentication.RedirectFromLoginPage()”将在您未设置授权 cookie 或您的登录页面是应用程序的主页(默认)页面时重定向到登录页面 -

    RedirectFromLoginPage 方法使用 ReturnURL 变量名重定向到查询字符串中指定的 URL。例如,在 URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx 中,RedirectFromLoginPage 方法重定向到返回 URL caller.aspx。如果 ReturnURL 变量不存在,RedirectFromLoginPage 方法将重定向到 DefaultUrl 属性中的 URL。

    Via MSDN

    【讨论】:

      【解决方案2】:

      我使用经典的 ReturnUrl 查询字符串参数让用户回到正确的页面。不幸的是,RedirectFromLoginPage 在 OpenId 身份验证后无法正常工作,因此您必须手动进行。请注意,这是作为身份验证模块完成的,而不是在控制器上更深入。这样感觉更干净。

            FormsAuthentication.SetAuthCookie(openid.Response.ClaimedIdentifier, false);
            //FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false); <-- doesn't work
            //send back to the right page
            string returnUrl = ctx.Request.QueryString["ReturnUrl"];
            if (!string.IsNullOrEmpty(returnUrl))
            {
              returnUrl = HttpUtility.UrlDecode(returnUrl);
              ctx.Response.Redirect(returnUrl);
            }
      

      如果您想查看 OpenIdAuthenticationModule 的完整实现,请查看source code on codeplex

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多