Asp.net mvc mvc4向会话添加特定数据
我在表单中有一个登录名。当用户登录时,他必须在两种类型中进行选择并发送用户名和密码 我可以这样做,并且我可以连接到我的模型以验证用户。然后,如果他输入了正确的姓名和密码,我会这样做:Asp.net mvc mvc4向会话添加特定数据,asp.net-mvc,asp.net-mvc-4,login,session-variables,Asp.net Mvc,Asp.net Mvc 4,Login,Session Variables,我在表单中有一个登录名。当用户登录时,他必须在两种类型中进行选择并发送用户名和密码 我可以这样做,并且我可以连接到我的模型以验证用户。然后,如果他输入了正确的姓名和密码,我会这样做: FormsAuthentication.SetAuthCookie(login.UserName, login.RememberMe); 但我需要一个方法来保存他的类型。我想我必须在会议中这样做,我说得对吗?如果是,请怎么做?如果没有,最好的方法是什么?您只需在控制器中使用会话对象即可: Session["use
FormsAuthentication.SetAuthCookie(login.UserName, login.RememberMe);
但我需要一个方法来保存他的类型。我想我必须在会议中这样做,我说得对吗?如果是,请怎么做?如果没有,最好的方法是什么?您只需在控制器中使用
会话
对象即可:
Session["usertype"] = yourType;
但是,我会使用一个自定义类来存储此类信息,如果您有很多用户,您也应该重新设计此解决方案(重新考虑会话存储位置或在线用户数据位置)。您只需在控制器中使用
会话
对象即可:
Session["usertype"] = yourType;
但是,我会使用一个自定义类来存储此类信息,如果您有很多用户,您也应该重新设计此解决方案(重新考虑会话存储位置或在线用户数据位置)。您只需在控制器中使用
会话
对象即可:
Session["usertype"] = yourType;
但是,我会使用一个自定义类来存储此类信息,如果您有很多用户,您也应该重新设计此解决方案(重新考虑会话存储位置或在线用户数据位置)。您只需在控制器中使用
会话
对象即可:
Session["usertype"] = yourType;
但是,我会使用一个自定义类来存储此类信息,如果您有很多用户(请重新考虑会话存储位置或在线用户数据位置),您也应该重新设计此解决方案。如果要使用会话,可以使用
会话
你可以在里面储存任何东西。因此,如果需要,可以存储整个登录对象
Session["user"] = yourUser;
会话是一个好地方,因为它对于每个用户都是唯一的
如果您在web应用程序中使用成员类,那么可以添加自定义字段,我认为这是解决问题的最佳方法。看看这个或这个。这不仅会将您的信息保存到用户的会话中,还会将此用户类型添加到数据库中。如果要使用会话,可以使用会话
你可以在里面储存任何东西。因此,如果需要,可以存储整个登录对象
Session["user"] = yourUser;
会话是一个好地方,因为它对于每个用户都是唯一的
如果您在web应用程序中使用成员类,那么可以添加自定义字段,我认为这是解决问题的最佳方法。看看这个或这个。这不仅会将您的信息保存到用户的会话中,还会将此用户类型添加到数据库中。如果要使用会话,可以使用会话
你可以在里面储存任何东西。因此,如果需要,可以存储整个登录对象
Session["user"] = yourUser;
会话是一个好地方,因为它对于每个用户都是唯一的
如果您在web应用程序中使用成员类,那么可以添加自定义字段,我认为这是解决问题的最佳方法。看看这个或这个。这不仅会将您的信息保存到用户的会话中,还会将此用户类型添加到数据库中。如果要使用会话,可以使用会话
你可以在里面储存任何东西。因此,如果需要,可以存储整个登录对象
Session["user"] = yourUser;
会话是一个好地方,因为它对于每个用户都是唯一的
如果您在web应用程序中使用成员类,那么可以添加自定义字段,我认为这是解决问题的最佳方法。看看这个或这个。这不仅会将您的信息保存到用户的会话中,而且还会将此用户类型添加到数据库中。这取决于具体情况。您是否需要在用户关闭浏览器后保存“类型”?因为如果你在会话中保存它,下次他打开它时,它就会消失
如果您确实需要保存,最好使用cookie
要添加cookie,请执行以下操作:
this.Response.Cookies.Add(new HttpCookie("my-cookie-name", myValueToSave));
视情况而定。您是否需要在用户关闭浏览器后保存“类型”?因为如果你在会话中保存它,下次他打开它时,它就会消失
如果您确实需要保存,最好使用cookie
要添加cookie,请执行以下操作:
this.Response.Cookies.Add(new HttpCookie("my-cookie-name", myValueToSave));
视情况而定。您是否需要在用户关闭浏览器后保存“类型”?因为如果你在会话中保存它,下次他打开它时,它就会消失
如果您确实需要保存,最好使用cookie
要添加cookie,请执行以下操作:
this.Response.Cookies.Add(new HttpCookie("my-cookie-name", myValueToSave));
视情况而定。您是否需要在用户关闭浏览器后保存“类型”?因为如果你在会话中保存它,下次他打开它时,它就会消失
如果您确实需要保存,最好使用cookie
要添加cookie,请执行以下操作:
this.Response.Cookies.Add(new HttpCookie("my-cookie-name", myValueToSave));
你说的“保存他的类型”是什么意思?你是说他的角色吗?那么用户在应用程序中的角色是什么呢?如果是角色,那么将其存储在Authcookie中可能是正确的位置。您可以将附加值添加到身份验证cookie中,甚至可以滚动考虑附加值的您自己的Authorize属性,这些值将在用户主体对象上可用
`公共接口ICustomPrincipal:IPPrincipal
{
Guid用户标识{get;set;}
字符串名{get;set;}
字符串LastName{get;set;}
字符串EmailAddress{get;set;}
Guid CompanyID{get;set;}
}
Set身份验证方法如下所示
if (!membershipService.IsAccountLockedOut(loginModel.Email) &&
membershipService.Login(loginModel.Email, loginModel.Password))
{
UserDto user = membershipService.GetUserDetail(loginModel.Email);
var cookieContext = new CookieContext();
cookieContext.SetAuthenticationToken(user);
//Need to check if user has reset thier password and needs to change it
if (!user.PasswordReset)
{
return RedirectToLocal(returnUrl);
}
else
{
return RedirectToAction("ChangePassword", "Account");
}
}
public void SetAuthenticationToken(UserDto userDto)
{
string userData;
string encTicket;
var serializeModel = new CustomPrincipalSerializeModel();
serializeModel.UserID = userDto.ID;
serializeModel.FirstName = userDto.FirstName;
serializeModel.LastName = userDto.LastName;
serializeModel.EmailAddress = userDto.Email;
serializeModel.CompanyID = userDto.CompanyID;
serializeModel.CompanyName = userDto.Company;
serializeModel.JobTitle = userDto.JobTitle;
var serializer = new JavaScriptSerializer();
userData = serializer.Serialize(serializeModel);
var autTicket = new FormsAuthenticationTicket(1, userDto.Email, DateTime.Now,
DateTime.Now.AddMinutes(15), false, userData);
encTicket = FormsAuthentication.Encrypt(autTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.HttpOnly = true;
HttpContext.Current.Response.Cookies.Add(cookie);
}
在整个应用程序中,您需要与用户一起旅行的所有数据都可以在身份验证Cookie上获得,并且无论何时使用CustomAuthority,都可以在用户对象上获得