Exemplo n.º 1
0
        public ActionResult <object> Get(string username, string password)
        {
            Managers managerModel        = _manager.Login(username, password);
            var      jwtSection          = _configuration.GetSection("jwt");
            int      tokenExpires        = Convert.ToInt32(jwtSection.GetSection("TokenExpires").Value);
            int      refreshTokenExpires = Convert.ToInt32(jwtSection.GetSection("RefreshTokenExpires").Value);

            if (managerModel == null)
            {
                return(ErrorResult <int>("用户名或密码错误"));
            }

            JwtTokenHelper jwtTokenHelper = new JwtTokenHelper();

            var claims = new Claim[]
            {
                new Claim(ClaimTypes.Name, managerModel.UserName),
                new Claim(ClaimTypes.Role, managerModel.RoleId.ToString()),
                new Claim(JwtRegisteredClaimNames.Sid, managerModel.Id.ToString()),
            };

            string token               = jwtTokenHelper.GetToken(claims);
            string refreshToken        = jwtTokenHelper.RefreshToken();
            string tokenExpired        = StringHelper.GetTimeStamp(DateTime.UtcNow.AddMinutes(tokenExpires));
            string refreshToeknExpired = StringHelper.GetTimeStamp(DateTime.UtcNow.AddMinutes(refreshTokenExpires));

            _manager.AddRefeshToken(token, refreshToken, managerModel.Id, refreshTokenExpires);

            return(SuccessResult <object>(new { token = token, refreshToken = refreshToken, userName = managerModel.UserName, expires = tokenExpired, refreshExpires = refreshToeknExpired }));
        }