/// <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); }
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; } }