コード例 #1
0
ファイル: LoginController.cs プロジェクト: wghgavin/WebApi-
        //[Route("GetJwtToken3")]
        public async Task <object> GetJwtToken3(string name = "", string pass = "")
        {
            string jwtStr = string.Empty;

            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pass))
            {
                return(new JsonResult(new
                {
                    Status = false,
                    message = "用户名或密码不能为空"
                }));
            }
            pass = Md5Helper.MD5Encrypt32(pass);
            var user = await _sysUserInfoServices.Query(d => d.UloginName == name && d.UloginPWD == pass);

            if (user.Count > 0)
            {
                var userRoles = await _sysUserInfoServices.GetUserRoleNameStr(name, pass);

                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, name),
                    new Claim(JwtRegisteredClaimNames.Jti, user.FirstOrDefault().UiD.ToString()),
                    new Claim(ClaimTypes.Expiration, (DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds)).ToString())
                };
                claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));

                var data = await _roleModulePermissionServices.RoleModuleMaps();

                var list = (from item in data
                            where item.IsDeleted == false
                            orderby item.Id
                            select new PermissionItem
                {
                    Url = item.Module?.LinkUrl,
                    Role = item.Role?.Name
                }).ToList();
                _requirement.Permissions = list;
                //用户标识
                var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme);
                identity.AddClaims(claims);
                var token = JwtToken.BuildJwtToken(claims.ToArray(), _requirement);
                return(new JsonResult(token));
            }
            else
            {
                return(new JsonResult(new
                {
                    succss = false,
                    message = "认证失败"
                }));
            }
        }