Пример #1
0
        public ResultModel <LoginRedisResult> TestLogin()
        {
            var result = new ResultModel <LoginRedisResult>();
            //测试自己创建的对象
            var user = new AccountModel
            {
                Phone    = "13512345678",
                Password = "******"
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var key          = Encoding.UTF8.GetBytes(_jwtSettings.SecretKey);
            var authTime     = DateTime.Now;         //授权时间
            var expiresAt    = authTime.AddDays(30); //过期时间

            //tokenDescripor
            var tokenDescripor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[] {
                    new Claim(JwtClaimTypes.Audience, _jwtSettings.Audience),
                    new Claim(JwtClaimTypes.Issuer, _jwtSettings.Issuer),
                    new Claim(JwtClaimTypes.Name, user.Phone),
                    new Claim(JwtClaimTypes.Id, user.Id.ToString()),
                    new Claim(JwtClaimTypes.PhoneNumber, user.Phone)
                }),
                Expires = expiresAt,
                //对称秘钥SymmetricSecurityKey
                //签名证书(秘钥,加密算法)SecurityAlgorithms
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var token       = tokenHandler.CreateToken(tokenDescripor);
            var tokenString = tokenHandler.WriteToken(token);

            var resultMod = new LoginRedisResult
            {
                AccessToken = tokenString,
                TokenType   = "Bearer",
                LoginMod    = new UserInfoModel
                {
                    Id        = user.Id.ToString(),
                    Name      = user.Phone,
                    Phone     = user.Phone,
                    AutTime   = DateTimeExtend.ConvertToTimeStamp(authTime),
                    ExpiresAt = DateTimeExtend.ConvertToTimeStamp(expiresAt)
                }
            };

            return(result.Success("登录成功", resultMod));
        }