我有一个简单的页面,我有一个登录按钮。我只是想以编程方式设置用户身份,以便当我重新导航到此页面或任何其他页面时,我可以获得当前的用户身份。对此是否有特殊考虑?
问问题
23312 次
2 回答
15
简短的回答:
//
// Swapped FormsIdentity principal with our own custom IPrincipal
//
HttpContext.Current.User = yourPrincipalFromSomewhere;
//see
//http://www.hanselman.com/blog/SystemThreadingThreadCurrentPrincipalVsSystemWebHttpContextCurrentUserOrWhyFormsAuthenticationCanBeSubtle.aspx
//
// Sync Context Principal with Thread Principal
//
System.Threading.Thread.CurrentPrincipal = System.Web.HttpContext.Current.User;
所以在登录时,我的团队会将 IPrincipal(我们的自定义)放在这里:
HttpContext.Current.Cache.Insert
然后在
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
我们会从:
HttpContext.Current.Cache
然后将其重新附加到:
// Swapped FormsIdentity principal with our own IPrincipal
//
HttpContext.Current.User = cachedPrincipal;
//see
//http://www.hanselman.com/blog/SystemThreadingThreadCurrentPrincipalVsSystemWebHttpContextCurrentUserOrWhyFormsAuthenticationCanBeSubtle.aspx
//
// Sync Context Principal with Thread Principal
//
System.Threading.Thread.CurrentPrincipal = System.Web.HttpContext.Current.User;
我是在说“完全像我的团队那样做”吗?不必要。但我向您展示了我们遇到的 2 个附上它的地方。
还有 hanselman 链接,它显示了一些关于它的信息。
于 2013-03-06T19:13:03.977 回答
2
保存用户 ID:
Session["UserId"] = loggedInUserId;
检索用户 ID
int loggedInUserId = (int)Session["UserId"];
您担心什么样的特殊考虑?更加详细一些。
于 2013-03-06T18:38:04.850 回答