我不确定这是否是实现它的最佳方式,但我希望在当前用户的所有请求期间保持用户对象处于活动状态。从阅读几个资源,我了解到,你应该创建自己的原则,它拥有这一点。但我不想每个认证请求触发数据库。有关如何处理此问题的任何建议?缓存数据库请求是个好主意吗?在asp.net中设置当前用户mvc
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
User user;
using (HgDataContext hg = new HgDataContext())
{
if (Session["user"] != null)
{
user = (from u in hg.Users where u.EmailAddress == authTicket.Name select u).Single();
} else
{
user = Session["user"] as User;
}
}
var principal = new HgPrincipal(user);
Context.User = principal;
}
}
这个问题似乎还不清楚。你想要保持什么样的对象?在任何情况下,你的代码片段都不能保持任何对象的活着,所以这里似乎有错误。但是,如果不知道你想要达到什么目的,我什么都不能说。你能否详细说明一下? – 2010-04-19 12:07:46
我尽量保持我的用户对象 – TomHastjarjanto 2010-04-21 19:30:17