我目前正在mvc中实现会话以存储登录的用户详细信息。我正在使用HttpContext.Current.User.Identity.Name
检索用户信息,然后将该值传递给数据库以查看它是否存在。请注意,没有登录屏幕。如果用户存在,我将该值存储在会话中。
如果你看到下面的代码,我从会话启动事件调用MCRHeler类方法。从那里开始,代码非常自我解释。
我想知道是否有关于实施的建议或建议。我还想知道我是否需要处理杀戮会话,如果是,那该怎么办呢
Global.asax中
protected void Session_Start(object sender, EventArgs e)
{
var userDetails = MCRHelper.UserDetails;
if (userDetails != null)
Response.RedirectToRoute("Default");
else
Response.Redirect("Message/Authorize",false);
}
MCRHelper
上课:
public static UserDetails UserDetails
{
get
{
if (HttpContext.Current.Session["UserDetails"] == null)
{
if (IsUserExists())
{
var userSessionRepository = new SessionRepository();
var contactDetails = userSessionRepository.GetUserProfileByNetworkId(GetShortname());
HttpContext.Current.Session["UserDetails"] = contactDetails;
}
}
return HttpContext.Current.Session["UserDetails"] as UserDetails;
}
}
public static bool IsUserExists()
{
using (var db = new MCREntities())
{
return Convert.ToBoolean(db.spUserExists(GetShortname(), GetDomain(), 1).FirstOrDefault().UserExists);
}
}
会话资料库:
public class SessionRepository
{
public UserDetails GetUserProfileByNetworkId(string user)
{
MCREntities db = new MCREntities();
var userProfiles = db.spGetUserProfileByNetworkID(user).FirstOrDefault();
return Mapper.Map<UserDetails>(userProfiles);
}
}