【问题标题】:Save All user data in Forms authentication cookies将所有用户数据保存在表单身份验证 cookie 中
【发布时间】:2016-04-24 13:05:11
【问题描述】:

我想将电子邮件、column1 和column2 与用户类型一起存储。 它要求在每次页面加载时检查 column1 和 colmun2 值,我不想每次都从数据库中获取。

我该怎么做?

string type = User.Type;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, lg.UserName, DateTime.Now, DateTime.Now.AddMinutes(50), ckbRemember.Checked, User.Type,FormsAuthentication.FormsCookiePath);

【问题讨论】:

    标签: c# asp.net cookies forms-authentication httpcookie


    【解决方案1】:

    您可以将最后一个参数设置为逗号分隔的字符串,如下面的代码所示。

    FormsAuthenticationTicket ticket = null;
    ticket = new FormsAuthenticationTicket(1, lg.UserName, DateTime.Now, 
            DateTime.Now.AddMinutes(50), ckbRemember.Checked,
            email + "," + column1 + ","+ column2 + "," + type);
    //or just use line of code below after creating ticket object
    //ticket.UserData = email + "," + column1 + ","+ column2 + "," + type;
    

    然后,当你想读取forms authentication ticket的用户数据时,你可以使用下面的代码。

    FormsIdentity identity = (FormsIdentity)Context.User.Identity;
    userData = identity.Ticket.UserData;
    string[] data =  userData.Split(",".ToCharArray());
    //get the data stored in UserData property of forms authentication ticket
    string email =  data[0];
    string column1 =  data[1];
    string column2 = data[2];
    string  userType = data[3];
    

    【讨论】:

    • 谢谢它解决了问题:) 但我可以问我应该这样做吗?将数据存储在 cookie 中?它的加密 cookie。你能告诉我使用这种方法有什么优点和缺点吗
    • 表单身份验证 cookie 非常安全。请记住在 Web 配置中设置 protection="All" 以进行表单身份验证。
    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多