FormsAuthentication Cookie不保存

时间:2018-01-23 12:25:28

标签: c# asp.net cookies formsauthentication

我有两个登录页面。一个用于管理员用户,一个用于客户。

他们都执行以下代码(授权后)将cookie添加到Response。这两个页面然后重定向到提供的URL(我不在这里进行重定向,因为我对管理员做了一些额外的检查)

public static string SetAuthCookie<T>
    (this HttpResponse responseBase, string name, bool rememberMe, T userData)
{
    /// In order to pickup the settings from config, we create a default cookie 
    /// and use its values to create a new one.
    var cookie = FormsAuthentication.GetAuthCookie(name, true);
    var ticket = FormsAuthentication.Decrypt(cookie.Value);

    var newTicket = new FormsAuthenticationTicket(
        ticket.Version, 
        ticket.Name, 
        ticket.IssueDate, 
        ticket.Expiration,
        true,
        Newtonsoft.Json.JsonConvert.SerializeObject(userData), 
        ticket.CookiePath
        );

    var encTicket = FormsAuthentication.Encrypt(newTicket);

    /// Use existing cookie. Could create new one but would have to copy settings over...
    cookie.Expires = (rememberMe ? DateTime.Now.AddDays(62) : DateTime.MinValue);

    cookie.Value = encTicket;

    responseBase.Cookies.Set(cookie);

    return FormsAuthentication.GetRedirectUrl(name, true /*This Is Ignored*/);
}

管理
现在管理员按照它说的做了。添加cookie并重定向到管理员欢迎屏幕。

客户
客户登录区域没有做同样的事情(见下面的screengrab)。

  1. 它发布(如您所见,它收到保存cookie的请求)
  2. 重定向
  3. 但是,哦不,下一个请求没有cookie
  4. 系统无法看到用户已通过身份验证
  5. 返回登录界面
  6. The process of redirects

    我认为问题可能是本地浏览器 不,试过:不同的浏览器,使用私人/隐身。

    我认为这可能是cookie的设置 怎么会这样?他们都使用相同的代码。

    也许web.config(在他们尊敬的目录中)?
    不,只是<authorization>规则

    Cookie可能有问题吗? 不,看起来很好。相同的域名,HTTPS。一切都很好

    RememberMe有什么关系?
    不,无论是否有

    尝试过

1 个答案:

答案 0 :(得分:0)

Soooo ......太傻了。

我忘了排除([JsonIgnore])获取一些额外数据的属性(设置cookie不需要)。这被包括在内,显然,我的cookie太大而无法保存。

糟糕。