/// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }