Mus*_*idd 13 asp.net forms-authentication
我正在尝试加密一些userData以使用Forms身份验证创建我自己的自定义IPrincipal和IIdentity对象 - 我已将表示我登录用户的对象序列化为Json并创建了我的FormsAuthentication票证,如下所示:
string user_item = GetJsonOfLoggedinUser();/*get JSON representation of my logged in user*/
System.Web.Security.FormsAuthenticationTicket ticket =
new System.Web.Security.FormsAuthenticationTicket(1,
WAM.Utilities.SessionHelper.LoggedInEmployee.F_NAME + " "
+ WAM.Utilities.SessionHelper.LoggedInEmployee.L_NAME,
DateTime.Now, DateTime.Now.AddMinutes(30), false, user_item);
string encrypted_ticket = System.Web.Security.FormsAuthentication.Encrypt(ticket);
HttpCookie auth_cookie =
new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName, encrypted_ticket);
Response.Cookies.Add(auth_cookie);
Run Code Online (Sandbox Code Playgroud)
但是,字符串encrypted_ticket总是如此null.user_item字符串的长度是否有限制?
谢谢穆斯塔法
Jul*_*ian 32
作为除了这个问题,当用户数据参数null的encrypted_ticket也将是null.
在这个例子中:
var ticket = new System.Web.Security.FormsAuthenticationTicket(1,
"username",
DateTime.Now, DateTime.Now.AddMinutes(30), false, null);
string encrypted_ticket = System.Web.Security.FormsAuthentication.Encrypt(ticket);
Run Code Online (Sandbox Code Playgroud)
encrypted_ticket现在收益null.然而,使用空字符串或者string.Empty对用户数据参数,我们得到了一个有效的encrypted_ticket.
这也在MSDN上有所记录
注意
userData参数不能为null.
是的,典型的cookie限制是~4k.
添加加密,你可以达到<2k.
你的代码是正确的..考虑:
string user_item = "fsddfdfssdfsfdasdfsf";
System.Web.Security.FormsAuthenticationTicket ticket =
new System.Web.Security.FormsAuthenticationTicket(1,
" sdfasdf asdflasdfasd ",
DateTime.Now, DateTime.Now.AddMinutes(30), false, user_item);
string encrypted_ticket =
System.Web.Security.FormsAuthentication.Encrypt(ticket);
HttpCookie auth_cookie =
new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName, encrypted_ticket);
Run Code Online (Sandbox Code Playgroud)
产量:
95ED981CFDF6AE506650E2AD01D2B52666AFC4895F0E19F14D82628C3F263EF1DA77F73BFD0284BEDCF815FBFB9AF00AF8875C61D01E27BF53C229F19C7CDE54FBC10AC478FAF02237DDC545AEF32BBA8EED88DBB09D671CD87E685E9FE05908CAE02EB05880DC1D230D67AEB0D7B0F258435D906EBD7F505DCCD738D94532E96363B13DA92060720476619672FEC670
虽然根据我的经验,臃肿的cookie被截断而不是被取消,但您的问题可能是JSON包含会使您的cookie格式错误的字符,从而破坏它.
确保您的json尺寸合理,然后尝试
string user_item = Server.UrlEncode(GetJsonOfLoggedinUser());
Run Code Online (Sandbox Code Playgroud)
确保你测量你的饼干,不要试图推动它,当你想回家看迷路和喝龙舌兰酒时,它会以微妙和恶毒的方式咬人.没有什么好玩的.
| 归档时间: |
|
| 查看次数: |
4909 次 |
| 最近记录: |