diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor index 64a6bbd..858ba0f 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor @@ -43,7 +43,7 @@ else - Copyright © 2025-@DateTime.Now.Year Atomx.cn All rights reserved. + Copyright © 2025-@DateTime.Now.Year Atomlust.com All rights reserved. runing as @handler diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor index 92334fa..7140e34 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor @@ -31,14 +31,17 @@ 帐号列表
- + + + + @* 没有权限 - + *@
diff --git a/Atomx.Admin/Atomx.Admin.Client/_Imports.razor b/Atomx.Admin/Atomx.Admin.Client/_Imports.razor index 50dbdc0..7e01ee7 100644 --- a/Atomx.Admin/Atomx.Admin.Client/_Imports.razor +++ b/Atomx.Admin/Atomx.Admin.Client/_Imports.razor @@ -8,6 +8,7 @@ @using static Microsoft.AspNetCore.Components.Web.RenderMode @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.JSInterop +@using Atomx.Admin.Client.Components @using Atomx.Admin.Client @using Atomx.Admin.Client.Services @using Atomx.Admin.Client.Layout diff --git a/Atomx.Admin/Atomx.Admin/Controllers/SignController.cs b/Atomx.Admin/Atomx.Admin/Controllers/SignController.cs index 2ed9823..518b906 100644 --- a/Atomx.Admin/Atomx.Admin/Controllers/SignController.cs +++ b/Atomx.Admin/Atomx.Admin/Controllers/SignController.cs @@ -2,6 +2,7 @@ using Atomx.Admin.Client.Models; using Atomx.Admin.Client.Validators; using Atomx.Admin.Services; +using Atomx.Admin.Utils; using Atomx.Common.Models; using Atomx.Common.Utils; using Atomx.Data; @@ -10,12 +11,15 @@ using Atomx.Data.Services; using Atomx.Utils.Extension; using MapsterMapper; using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; +using System.Threading.Tasks; namespace Atomx.Admin.Controllers { @@ -30,8 +34,9 @@ namespace Atomx.Admin.Controllers readonly DataContext _dbContext; readonly JwtSetting _jwtSetting; readonly ICacheService _cacheService; + readonly AuthenticationStateProvider _authenticationStateProvider; - public SignController(ILogger logger, IdentityService identityService, IIdCreatorService idCreator, IMapper mapper, DataContext dbContext, JwtSetting jwtSetting, ICacheService cacheService) + public SignController(ILogger logger, IdentityService identityService, IIdCreatorService idCreator, IMapper mapper, DataContext dbContext, JwtSetting jwtSetting, ICacheService cacheService, AuthenticationStateProvider authenticationStateProvider) { _logger = logger; _identityService = identityService; @@ -40,6 +45,7 @@ namespace Atomx.Admin.Controllers _dbContext = dbContext; _jwtSetting = jwtSetting; _cacheService = cacheService; + _authenticationStateProvider = authenticationStateProvider; } /// @@ -48,7 +54,7 @@ namespace Atomx.Admin.Controllers /// [HttpPost("in")] [AllowAnonymous] - public IActionResult Login(LoginModel model) + public async Task Login(LoginModel model) { var validator = new LoginModelValidator(); var validation = validator.Validate(model); @@ -100,10 +106,12 @@ namespace Atomx.Admin.Controllers new Claim(ClaimKeys.Permission, role?.Permission??string.Empty) }; + var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); + var tokenDescriptor = new SecurityTokenDescriptor { - Subject = new ClaimsIdentity(claims), + Subject = claimsIdentity, Expires = DateTime.UtcNow.AddMinutes(_jwtSetting.AccessTokenExpirationMinutes), SigningCredentials = credentials, @@ -119,6 +127,9 @@ namespace Atomx.Admin.Controllers user.LastIp = _identityService.GetClientIp(); user.LoginCount++; + //((PersistingRevalidatingAuthenticationStateProvider) _authenticationStateProvider). + + await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity)); return new JsonResult(loginResult); diff --git a/Atomx.Admin/Atomx.Admin/Services/IdentityService.cs b/Atomx.Admin/Atomx.Admin/Services/IdentityService.cs index 3b14156..58a30f3 100644 --- a/Atomx.Admin/Atomx.Admin/Services/IdentityService.cs +++ b/Atomx.Admin/Atomx.Admin/Services/IdentityService.cs @@ -55,11 +55,11 @@ namespace Atomx.Admin.Services /// public long GetUserId() { - var userIdClaim = _httpContextAccessor.HttpContext?.User.FindFirst(ClaimKeys.Id); - return userIdClaim != null ? long.Parse(userIdClaim.Value) : 0; + //var userIdClaim = _httpContextAccessor.HttpContext?.User.FindFirst(ClaimKeys.Id); + //return userIdClaim != null ? long.Parse(userIdClaim.Value) : 0; - //var id = _httpContextAccessor.HttpContext?.User?.Claims?.SingleOrDefault(p => p.Type == ClaimKeys.Id)?.Value ?? "0"; - //return id.ToLong(); + var id = _httpContextAccessor.HttpContext?.User?.Claims?.SingleOrDefault(p => p.Type == ClaimKeys.Id)?.Value ?? "0"; + return id.ToLong(); } /// @@ -68,11 +68,11 @@ namespace Atomx.Admin.Services /// public int GetUserRoleId() { - var userIdClaim = _httpContextAccessor.HttpContext?.User.FindFirst(ClaimKeys.Role); - return userIdClaim != null ? int.Parse(userIdClaim.Value) : 0; + //var userIdClaim = _httpContextAccessor.HttpContext?.User.FindFirst(ClaimKeys.Role); + //return userIdClaim != null ? int.Parse(userIdClaim.Value) : 0; - //var id = _httpContextAccessor.HttpContext?.User?.Claims?.SingleOrDefault(p => p.Type == ClaimTypes.Sid)?.Value ?? "0"; - //return id.ToLong(); + var id = _httpContextAccessor.HttpContext?.User?.Claims?.SingleOrDefault(p => p.Type == ClaimKeys.Role)?.Value ?? "0"; + return id.ToInt(); } ///