Ede*_*den 43 c# asp.net asp.net-mvc forms-authentication
我使用aspx和c#来设置登录的身份验证cookie.
FormsAuthentication.SetAuthCookie(UserName, True)
Run Code Online (Sandbox Code Playgroud)
我想在同一个cookie中存储更多信息.我可以为此身份验证Cookie添加值,还是必须使用第二个http cookie?
基本上我正在寻找存储用户的Id
所以我可以使用users表行键访问数据库
谢谢,伊甸园
Joe*_*Joe 48
您可以将用户数据添加到FormsAuthenticationTicket,然后自己生成cookie.
FormsAuthenticationTicket的MSDN文档中有一个示例.
编辑
请注意,在创建故障单时,您需要设置超时,通常您需要与web.config中配置的值相同.不幸的是,在Framework 3.5或更早版本中,FormsAuthentication
该类不公开公开此超时.有关解决方法,请使用此连接反馈项的响应中描述的技术之一.
UPDATE
令人遗憾的是,Connect反馈项目不再存在.希望您简要介绍一下这些技术是什么.
是的,很遗憾微软已经放弃了历史性的Connect项目.IIRC,他们建议的两种技术是:
使用WebConfigurationManager读取相关配置部分并获取超时值.
使用创建cookie,使用FormsAuthentication.GetAuthCookie
解密FormsAuthentication.Decrypt
并检查生成的cookie FormsAuthenticationTicket
.
或升级到FormsAuthentication.Timeout
有财产的.NET 4.x.
有关详细信息,请参阅此问题
and*_*ows 15
你可以在auth cookie中放入任何你想要的东西,只要它对你有用.也就是说,如果您要提供敏感信息,至少应该对其进行加密,但我建议不要将敏感信息放在那里.你可以这样做:
Forms.SetAuthCookie (UserName + "|" + UserId, true);
Run Code Online (Sandbox Code Playgroud)
然后,只要您需要用户名或用户ID,它就在那里.只需加载cookie并解析出您需要的值.
同样,我建议不要这样做,特别是如上所述.那说,有可能.您应该创建访问器方法以将数据拉回:
public int CurrentUserId
{
get
{
int userId = 0;
if (HttpContext.Current.Request.IsAuthenticated)
{
userId = Convert.ToInt32(HttpContext.Current.User.Identity.Name.Split('|')[1]);
}
return userId;
}
}
public string CurrentUserName
{
get
{
string userName = string.Empty;
if (HttpContext.Current.Request.IsAuthenticated)
{
userName = HttpContext.Current.User.Identity.Name.Split('|')[0];
}
return userName;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
55129 次 |
最近记录: |