FormsAuthentication.RedirectFromLoginPage不会将我返回到原始URL

时间:2010-01-05 22:27:24

标签: asp.net asp.net-mvc redirect openid forms-authentication

我到达我的登录页面,参数“returnUrl”设置为我所在的URL。然后,我通过OpenID(DotNetOpenAuth)登录,并致电FormsAuthentication.RedirectFromLoginPage()。登录成功,但我没有返回到我所在的原始页面。

我在注销时遇到同样的问题 - 当我退出时,即使注销链接包含正确的“returnUrl”参数,我也不会保留在同一页面上。

我做错了什么?

以下是代码段。我在调用RedirectFromLoginPage之后返回EmptyResult(),因为我真的不知道该怎么做(参见this related question

using (var relayingParty = new OpenIdRelyingParty())
{
    var response = relayingParty.GetResponse();

    if (response == null)
    {
        // Stage 2: user submitting Identifier
        var openId = Request.Form["openId"];
        relayingParty.CreateRequest(openId).RedirectToProvider();

        throw new Exception("Never gets here");
    }

    // Stage 3: OpenID Provider sending assertion response
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
            var claimedIdentifier = response.ClaimedIdentifier;
            var user = _userRepository.FindByOpenId(claimedIdentifier);
            if (user != null)
            {
                // login
                FormsAuthentication.RedirectFromLoginPage(user.Id.ToString(), false);
                return new EmptyResult();

                // TODO - https://stackoverflow.com/questions/1991710/understanding-redirections-in-asp-net-mvc
                // throw new Exception("Should never get here");
            }
        ...

1 个答案:

答案 0 :(得分:0)

这是一个黑暗中的镜头,但我最近经历了登录重定向的一些奇怪,因为匿名用户没有我的脚本文件夹的权限。这导致redirecturl指向jquery脚本,因为这是用户尝试访问的最后一个地址而没有成功。