【问题标题】:mono on Linux returns different set of cookiesLinux 上的 mono 返回不同的 cookie 集
【发布时间】:2023-04-03 15:22:01
【问题描述】:

我有一个 MVC 站点在 apache2 undo ubuntu 上的 mono 2.10.8.1 上运行。如果一切正常,我有一项服务可以检查凭据并设置 cookie。在 Windows 中我没有问题,只有一个 cookie:.ASPXAUTH。但是,当我部署到 linux 服务器时,它会设置两个 cookie ASP.NET_SessionId.MONOAUTH

我的问题是为什么它是 linux 中的两个 cookie 和 windows 中的一个,我怎样才能摆脱 ASP.NET_SessionId cookie?

我正在这样设置 cookie:

    Response.AppendCookie(BuildAuthenticationCookie(login, data));

    public static HttpCookie BuildAuthenticationCookie(string login, string ticketData)
    {
        var authTicket = new FormsAuthenticationTicket(2, login, DateTime.Now,
            DateTime.Now.AddMinutes(500), false, ticketData);
        var authCookie = new HttpCookie( FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket))
        {
            HttpOnly = true,
            Secure = SiteSettings.CookiesSslOnly,
            Expires = DateTime.Now.AddMinutes(SiteSettings.AuthCookieExpirationTime)
        };
        return authCookie;
    }

【问题讨论】:

    标签: asp.net-mvc apache cookies mono mod-mono


    【解决方案1】:

    我认为 Mono 没有任何问题。实际上,您提到的两个 cookie - ASP.NET_SessionId.MONOAUTHSessionForms Authorization cookie,它们确实是不同的。
    要摆脱ASP.NET_SessionId,您可以根本不使用会话或使用无cookie 会话(<sessionSate> on MSDN)。

    注意:您还应该在 Windows 上获得两个 cookie。如果不是,这可能意味着您没有点击任何在 SessionState 中设置某些值的 MVC 操作。如果您设法找到这样的 Action,您也会在 Windows 上获得两个 cookie。

    【讨论】:

    • 好吧,我想单声道没有问题,我相信它使用了自己的 cookie 机制。在 Windows 方面,我想我确实有两个相同的 cookie(我确实使用相同的操作),但是 ASP.NET 然后将它们组合在一个 cookie 中。谢谢你,它很有用
    • 我不想关闭漏洞应用程序的会话,但我有一些控制器扮演 Web 服务角色,我不需要它们的会话。我想没有办法(一个好方法)只为部分应用程序关闭会话:)
    • 当心! Microsoft 的 ASP.NET 堆栈也不将单个 cookie 用于 SessionState 和 Authorization。这些在 ASP.NET 中是完全分开的!更多信息请查看stackoverflow.com/questions/6066554/…
    • 是的,thnaks...到目前为止我已经完成了 - 只需使用 session 来存储用户信息...
    猜你喜欢
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多