Exemple #1
0
        public async Task <IActionResult> Signin(string username, string password, string remember)
        {
            EResult re = new EResult()
            {
                StatusCode = -1, Status = false, Message = "fault"
            };

            try
            {
                if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
                {
                    string pwd5 = MD5Util.Get32MD5Two(password);
                    (bool, ESysUserInfo)reLogin = _SysUserInfoRepository.Login(username, pwd5);
                    if (reLogin.Item1)
                    {
                        if (reLogin.Item2.Status == 1)
                        {
                            ESysUserInfo _user = reLogin.Item2;

                            IList <Claim> claims = new List <Claim>();

                            claims.Add(new Claim(ClaimTypes.Name, _user.UserName, ClaimValueTypes.String, LoginManager.Issuer));
                            claims.Add(new Claim(ClaimTypes.NameIdentifier, _user.UserID.ToString(), ClaimValueTypes.String, LoginManager.Issuer));
                            //获取权限
                            // string userMenus = GetUserMenu(_user.UserID).ToJson();
                            //claims.Add(new Claim(ClaimTypes.AuthorizationDecision, userMenus, ClaimValueTypes.String, LoginManager.Issuer));
                            claims.Add(new Claim(ClaimTypes.UserData, _user.ToJson(), ClaimValueTypes.String, LoginManager.Issuer));

                            //身份可以有多个身份 如:驾照/身份证/户口本
                            var userIdentity = new ClaimsIdentity(LoginManager.Issuer);
                            userIdentity.AddClaims(claims);

                            //主体,只有1个
                            var userPrincipal = new ClaimsPrincipal(userIdentity);

                            await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, userPrincipal,
                                                          new AuthenticationProperties
                            {
                                ExpiresUtc   = DateTime.UtcNow.AddMinutes(remember == "on" ? (1440 * 30) : 1440),
                                IsPersistent = false,
                                AllowRefresh = false
                            });


                            re.Status     = true;
                            re.StatusCode = 0;
                            re.Message    = "登陆成功.";
                        }
                        else
                        {
                            re.Message = "该账户已禁用.";
                        }
                    }
                    else
                    {
                        re.Message = "用户名或密码错误.";
                    }
                }
                else
                {
                    re.Message = "用户名或密码不能为空";
                }
            }
            catch (Exception ex)
            {
                re.Message = ex.Message;
            }
            return(Ok(re));
            //return RedirectToLocal("/");
        }