zoukankan      html  css  js  c++  java
  • FormsAuthentication 票据前后台登录导致掉线

    一、前后台的用户信息都是采用.NET自带的FormsAuthentication 的ticket存取用户信息,

    但是如果前后台用相同的用户使用票据这个会导致一方登陆后另一方会掉线,需要重新登陆。

    二、问题分析

    为什么会掉线呢?

    可能是因为相同的用户名存的Cookie一样导致把另一个替换了吧?

    后台是前台的子站,但是他们用的不是一个应用程序池,应该不会替换的呀。

    结果把应用程序池换了还是会掉线。

    后来想着前后台的票据虽然是不是同一个应用程序池,但是他们的票据名称是一样,能不能让他们的票据名不一样呢。

    后来把webconfig 的authentication 节点的<forms>子节点上加了个name属性 标识了这个票据的名字。同样后台也加了一个,不过名字不一样。

    结果奇迹发生了,不掉线了。

    三、结论

    事实证明,如果多个站点同时使用票据,为了避免站点之间互相替换cookie名,每个站点都应该给票据单独一个特定的标识名。

    四、花絮:

    票据使用方法

    public void SetAuthenticationToken(string name, string userdata, bool createPersistentCookie = false)
    {
    FormsAuthentication.SetAuthCookie(name, true, FormsAuthentication.FormsCookiePath);
    FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, name.ToString(), DateTime.Now, DateTime.Now.AddDays(1), true, userdata);
    string encTicket = FormsAuthentication.Encrypt(authTicket);
    this.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
    }

  • 相关阅读:
    服务管理--systemctl命令
    dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
    QML与Qt C++ 交互机制探讨与总结
    sync命令
    linux 下shell中if的“-e,-d,-f”是什么意思
    POJ 1936 All in All(模拟)
    POJ 1088 滑雪(记忆化搜索)
    POJ 3280 Cheapest Palindrome(DP 回文变形)
    POJ 3181 Dollar Dayz(高精度 动态规划)
    HDU 1114 Piggy-Bank(完全背包)
  • 原文地址:https://www.cnblogs.com/smalldragon-hyl/p/8484529.html
Copyright © 2011-2022 走看看