예제 #1
0
        public async Task <MessageModel <SysAdmin> > GetInfoByToken(string token)
        {
            var data = new MessageModel <SysAdmin>();

            if (!string.IsNullOrEmpty(token))
            {
                var tokenModel = JwtToken.SerializeJwt(token);
                if (tokenModel != null && tokenModel.Uid > 0)
                {
                    // 单独走教师表
                    var roletype = _iUser.GetClaimValueByType(ClaimTypes.Role);
                    if (roletype.Contains("Teacher_Role"))
                    {
                        var teacherinfo = await _iTeacherRepository.QueryById(tokenModel.Uid);

                        if (teacherinfo != null)
                        {
                            data.response = new SysAdmin()
                            {
                                uLoginName = teacherinfo.Account,
                                uLoginPWD  = teacherinfo.Password,
                                uRealName  = teacherinfo.Name,
                                uID        = teacherinfo.Id,
                            };
                            data.success = true;
                            data.msg     = "获取成功";
                        }
                        return(data);
                    }



                    var userinfo = await _SysAdminRepository.QueryById(tokenModel.Uid);

                    if (userinfo != null)
                    {
                        data.response = userinfo;
                        data.success  = true;
                        data.msg      = "获取成功";
                    }
                }
            }
            return(data);
        }
        public async Task <object> RefreshToken(string token = "")
        {
            string jwtStr = string.Empty;

            if (string.IsNullOrEmpty(token))
            {
                return(new JsonResult(new
                {
                    Status = false,
                    message = "token无效,请重新登录!"
                }));
            }
            var tokenModel = JwtToken.SerializeJwt(token);

            if (tokenModel != null && tokenModel.Uid > 0)
            {
                var user = await _SysAdminRepository.QueryById(tokenModel.Uid);

                if (user != null)
                {
                    var userRoles = await _SysAdminRepository.GetUserRoleNameStr(user.uLoginName, user.uLoginPWD);

                    //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色
                    var claims = new List <Claim> {
                        new Claim(ClaimTypes.Name, user.uLoginName),
                        new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid.ObjToString()),
                        new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString())
                    };
                    claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s)));

                    //用户标识
                    var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme);
                    identity.AddClaims(claims);

                    var refreshToken = JwtToken.BuildJwtToken(claims.ToArray(), _requirement);
                    return(new JsonResult(refreshToken));
                }
            }

            return(new JsonResult(new
            {
                success = false,
                message = "认证失败"
            }));
        }