From 524a4a8e46c2569b65a3a7dc924e02a3bb0f86e8 Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Mon, 29 Mar 2021 11:28:18 +0800 Subject: [PATCH] update Former-commit-id: f133576a16388cccbbf5dc41882b2734eaaf8b9c Former-commit-id: 24fd458e15ff925ae8ee90c3120454ef3fd9c900 --- .../Extensions/ClaimsPrincipalExtensions.cs | 2 +- projects/Infrastructure/Web/BaseStartup.cs | 2 +- projects/Platform/Api/Api/TokenController.cs | 10 ++++++++++ projects/Platform/wwwroot/js/axios.js | 3 ++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/projects/Infrastructure/Extensions/ClaimsPrincipalExtensions.cs b/projects/Infrastructure/Extensions/ClaimsPrincipalExtensions.cs index e162254e..da51d5de 100644 --- a/projects/Infrastructure/Extensions/ClaimsPrincipalExtensions.cs +++ b/projects/Infrastructure/Extensions/ClaimsPrincipalExtensions.cs @@ -19,7 +19,7 @@ namespace Infrastructure.Extensions public static Guid? GetOrganId(this ClaimsPrincipal user) { var value = user?.Claims?.FirstOrDefault(o => o.Type == "OrganId")?.Value; - return Guid.TryParse(value, out Guid id) ? id : null; + return value == null ? null : Guid.Parse(value); } } } diff --git a/projects/Infrastructure/Web/BaseStartup.cs b/projects/Infrastructure/Web/BaseStartup.cs index c6931e38..6b70e41e 100644 --- a/projects/Infrastructure/Web/BaseStartup.cs +++ b/projects/Infrastructure/Web/BaseStartup.cs @@ -301,7 +301,7 @@ namespace Infrastructure.Web else { var jwtCookieName = context.HttpContext.GetJwtCookieName(); - if (!context.Request.Headers.ContainsKey("Authorization") && context.Request.Cookies.Keys.Contains(jwtCookieName)) + if (context.Request.Cookies.Keys.Contains(jwtCookieName)) { context.Token = context.Request.Cookies[jwtCookieName]; } diff --git a/projects/Platform/Api/Api/TokenController.cs b/projects/Platform/Api/Api/TokenController.cs index 95823844..538786ec 100644 --- a/projects/Platform/Api/Api/TokenController.cs +++ b/projects/Platform/Api/Api/TokenController.cs @@ -13,6 +13,7 @@ using System.Linq; using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using Microsoft.IdentityModel.Tokens; +using Microsoft.EntityFrameworkCore; namespace Platform.Apis { @@ -120,6 +121,15 @@ namespace Platform.Apis return Unauthorized(ModelState.AddModelError("已过期")); } var userName = token.Claims.FirstOrDefault(o => o.Type == this._parameters.NameClaimType).Value; + var user = this._userRepo.Table() + .Include(o => o.OrganUsers) + .ThenInclude(o => o.Organ) + .FirstOrDefault(o => o.UserName == userName); + var userMainOrgan = user.OrganUsers.OrderByDescending(o => o.IsDefault).ThenBy(o => o.OrganId).FirstOrDefault(); + var claims = new List { + new Claim(this._parameters.NameClaimType, userName), + new Claim("OrganId", userMainOrgan.OrganId.ToString()) + }; return Ok(CreateToken(userName)); } catch (Exception ex) diff --git a/projects/Platform/wwwroot/js/axios.js b/projects/Platform/wwwroot/js/axios.js index c5375ac4..b5caf2b4 100644 --- a/projects/Platform/wwwroot/js/axios.js +++ b/projects/Platform/wwwroot/js/axios.js @@ -29,13 +29,14 @@ axios.interceptors.response.use(function (response) { var data = '"' + store.state.token.refreshToken + '"'; return axios.post(url, data, { headers: { 'Content-Type': 'application/json;charset=UTF-8' } }) .then(function (response) { - store.commit('setToken', response.data); + store.commit('login', response.data); error.config.headers['Authorization'] = 'Bearer ' + store.state.accessToken; console.log('redo request after refresh token'); return axios(error.config); }) .catch(function (error) { if (error.response.status === 401) { + store.commit('logout', response.data); console.log('refreshToken 已过期'); router.push('components/views/areas/default/login.vue'); }