/// <summary> /// 检查TOKEN合法性并刷新 /// <para>作 者:蔡亚康</para> /// <para>创建时间:2019-03-07</para> /// </summary> /// <param name="user">当前要刷新的用户</param> /// <param name="ipAddress">当前登陆的IP地址</param> /// <exception> /// 异常ID:2->手机号码在系统不存在 /// 异常ID:5->用户登陆已失效 /// </exception> /// <returns></returns> public StudentLoginResponse RefreshToken(HssUserPrincipal user, string ipAddress) { long userId = long.Parse(user.UserId); TblHssPassport passport = _repository.Value.Load(userId); StudentLoginResponse result = new StudentLoginResponse(); //1、验证账户是否存在 ValidateUserExist(passport); if (passport.OpenId != user.OpenId) { throw new BussinessException(ModelType.Hss, 5); } //2、更新最新登陆信息 UpdateLastLoginInfo(passport, ipAddress); //3、记录登陆日记 AddOperationLog(passport); //4、重新刷新token JwtTokenService tokenService = new JwtTokenService(); result.Token = tokenService.CreateToken(passport); return(result); }
/// <summary> /// 获取TOKEN对应的用户信息 /// <para>作 者:蔡亚康</para> /// <para>创建时间:2019-03-06</para> /// </summary> /// <param name="token"></param> /// <returns></returns> public HssUserPrincipal GetUser(String token) { string publicKey = ClientConfigManager.HssConfig.TokenKey.PublicKey; //使用私钥加密 HssUserPrincipal user = null; //从token中解析出claims 信息 List <Claim> claims = this.Decode(publicKey, token); if (claims != null && claims.Count > 0) { user = new HssUserPrincipal(); user.UserId = this.GetClaimValue(claims, JwtUserId); user.UserCode = this.GetClaimValue(claims, JwtUserName); user.OpenId = this.GetClaimValue(claims, JwtOpenId); } return(user); }
/// <summary> /// 处理TOKEN成用户信息 /// <para>作 者:蔡亚康</para> /// <para>创建时间:2019-03-07</para> /// </summary> /// <returns></returns> public HssUserPrincipal Handler(HttpContext content) { HssUserPrincipal user = null; string token = TokenProvider.GetToken(content, TOKEN_KEY); JwtTokenService tokenService = new JwtTokenService(); user = tokenService.GetUser(token); if (user != null) { user.IsAuthenticated = true; } else { user = new HssUserPrincipal(); user.IsAuthenticated = false; user.Msg = ErrorMsgConfig.ERROR_TOKEN_DESCRYPTION_FAILED; } return(user); }