Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc mvc4向会话添加特定数据_Asp.net Mvc_Asp.net Mvc 4_Login_Session Variables - Fatal编程技术网

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,都可以在用户对象上获得