コード例 #1
0
ファイル: AuthFilter.cs プロジェクト: LeoLcy/LeoProject
        /// <summary>
        /// 获取token中的用户信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static TokenUserInfo GetTokenUserInfo(this HttpRequest request)
        {
            if (request.HttpContext.Items.ContainsKey("TokenUserInfo"))
            {
                return(request.HttpContext.Items["TokenUserInfo"] as TokenUserInfo);
            }
            string token = request.Headers["token"];

            var userInfoStr = TokenHelper.GetDecodeTokenString(token);

            TokenUserInfo userInfo = null;

            try
            {
                if (!string.IsNullOrEmpty(userInfoStr))
                {
                    userInfo = JsonConvert.DeserializeObject <TokenUserInfo>(userInfoStr);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(userInfo);
        }
コード例 #2
0
ファイル: AuthFilter.cs プロジェクト: LeoLcy/LeoProject
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            if (context.Filters.Any(item => item is IAllowAnonymousFilter))
            {
                context.HttpContext.Items["AllowAnonymous"] = true;
                return;
            }
            context.HttpContext.Items["AllowAnonymous"] = false;
            var token = context.HttpContext.Request.Headers["token"].ToString();

            if (string.IsNullOrEmpty(token))
            {
                context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
                var res = JsonConvert.SerializeObject(new ApiResult(ResultCode.Forbidden_ERROR, "token不存在"));
                context.HttpContext.Response.WriteAsync(res);
                return;
            }
            var userInfoStr = TokenHelper.GetDecodeTokenString(token);

            TokenUserInfo userInfo = null;

            try
            {
                userInfo = JsonConvert.DeserializeObject <TokenUserInfo>(userInfoStr);
            }
            catch (Exception ex)
            {
                context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
                var res = JsonConvert.SerializeObject(new ApiResult(ResultCode.Forbidden_ERROR, "token无效"));
                context.HttpContext.Response.WriteAsync(res);
                throw ex;
            }
            if (userInfo != null && userInfo.UserId > 0)
            {
                if (DateTimeHelper.UnixTimeStampToDateTime(userInfo.ExpiredTimestamp) <
                    DateTime.Now)
                {
                    context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
                    var res = JsonConvert.SerializeObject(new ApiResult(ResultCode.Forbidden_ERROR, "token已过期"));
                    context.HttpContext.Response.WriteAsync(res);
                    return;
                }
                context.HttpContext.Items["TokenUserInfo"] = userInfo;
            }
            else
            {
                context.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
                var res = JsonConvert.SerializeObject(new ApiResult(ResultCode.Forbidden_ERROR, "token无效"));
                context.HttpContext.Response.WriteAsync(res);
                return;
            }
        }