【问题标题】:FormsAuthentication Cookie Not SavingFormsAuthentication Cookie 未保存
【发布时间】:2019-03-20 23:37:20
【问题描述】:

我有两个登录页面。一种供管理员用户使用,另一种供客户使用。

他们都执行以下代码(授权后)将 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 并重定向到管理员欢迎屏幕。

客户
客户登录区域不一样(见下面的屏幕截图)。

  1. 它发布(你可以看到它接收到保存 cookie 的请求)
  2. 它重定向
  3. 但是,哦不,下一个请求没有cookie
  4. 系统看不到用户已通过身份验证
  5. 我们回到登录屏幕

我认为问题可能出在本地浏览器上。
不,尝试过:不同的浏览器,使用私有/隐身。

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

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

可能是 cookie 有问题?
不,看起来不错。相同的域,HTTPS。一切都好

RememberMe有关吗?
不,有没有都试过了

【问题讨论】:

    标签: c# asp.net cookies formsauthentication


    【解决方案1】:

    Soooo.... 太傻了。

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

    哎呀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2019-01-19
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多