diff --git a/Tiobon.Core.Api/Controllers/LoginController.cs b/Tiobon.Core.Api/Controllers/LoginController.cs index 4f953268..925eae52 100644 --- a/Tiobon.Core.Api/Controllers/LoginController.cs +++ b/Tiobon.Core.Api/Controllers/LoginController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using Tiobon.Core.Common.Swagger; +using Tiobon.Core.Services; namespace Tiobon.Core.Controllers @@ -16,7 +17,7 @@ namespace Tiobon.Core.Controllers [AllowAnonymous] public class LoginController : BaseApiController { - readonly ISysUserInfoServices _sysUserInfoServices; + readonly IGhrs_UserServices _ghrs_UserServices; readonly IUserRoleServices _userRoleServices; readonly IRoleServices _roleServices; readonly PermissionRequirement _requirement; @@ -26,15 +27,15 @@ namespace Tiobon.Core.Controllers /// /// 构造函数注入 /// - /// + /// /// /// /// /// /// - public LoginController(ISysUserInfoServices sysUserInfoServices, IUserRoleServices userRoleServices, IRoleServices roleServices, PermissionRequirement requirement, IRoleModulePermissionServices roleModulePermissionServices, ILogger logger) + public LoginController(IGhrs_UserServices ghrs_UserServices, IUserRoleServices userRoleServices, IRoleServices roleServices, PermissionRequirement requirement, IRoleModulePermissionServices roleModulePermissionServices, ILogger logger) { - this._sysUserInfoServices = sysUserInfoServices; + this._ghrs_UserServices = ghrs_UserServices; this._userRoleServices = userRoleServices; this._roleServices = roleServices; _requirement = requirement; @@ -59,16 +60,16 @@ namespace Tiobon.Core.Controllers bool suc = false; //这里就是用户登陆以后,通过数据库去调取数据,分配权限的操作 - var user = await _sysUserInfoServices.GetUserRoleNameStr(name, MD5Helper.MD5Encrypt32(pass)); - if (user != null) - { - TokenModelJwt tokenModel = new TokenModelJwt { Uid = 1, Role = user }; + //var user = await _sysUserInfoServices.GetUserRoleNameStr(name, MD5Helper.MD5Encrypt32(pass)); + //if (user != null) + //{ + // TokenModelJwt tokenModel = new TokenModelJwt { Uid = 1, Role = user }; - jwtStr = JwtHelper.IssueJwt(tokenModel); - suc = true; - } - else - jwtStr = "login fail!!!"; + // jwtStr = JwtHelper.IssueJwt(tokenModel); + // suc = true; + //} + //else + // jwtStr = "login fail!!!"; return new ServiceResult() { @@ -137,42 +138,43 @@ namespace Tiobon.Core.Controllers if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(pass)) return Failed("用户名或密码不能为空"); + if (name != "Tiobonadmin" || pass != "Tiobonadmin") + return Failed("用户名或密码不能为空"); pass = MD5Helper.MD5Encrypt32(pass); - - var user = await _sysUserInfoServices.Query(d => - d.LoginName == name && d.LoginPWD == pass && d.IsDeleted == false); + name = "A1314"; + var user = await _ghrs_UserServices.Query(d => d.UserNo == name && d.IsEnable == 1); if (user.Count > 0) { - var userRoles = await _sysUserInfoServices.GetUserRoleNameStr(name, pass); + //var userRoles = await _sysUserInfoServices.GetUserRoleNameStr(name, pass); //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色 var claims = new List { - new Claim(ClaimTypes.Name, user.FirstOrDefault().Id.ToString()), - new Claim(JwtRegisteredClaimNames.Jti, user.FirstOrDefault().Id.ToString()), - new Claim("TenantId", user.FirstOrDefault().TenantId.ToString()), + new Claim(ClaimTypes.Name, user.FirstOrDefault().UserId.ToString()), + new Claim(JwtRegisteredClaimNames.Jti, user.FirstOrDefault().UserId.ToString()), + new Claim("TenantId", "0"), new Claim(JwtRegisteredClaimNames.Iat, DateTime.Now.DateToTimeStamp()), new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString()) }; - claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s))); + //claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s))); // ids4和jwt切换 // jwt if (!Permissions.IsUseIds4) { - var data = await _roleModulePermissionServices.RoleModuleMaps(); - var list = (from item in data - where item.IsDeleted == false - orderby item.Id - select new PermissionItem - { - Url = item.Module?.LinkUrl, - Role = item.Role?.Name.ObjToString(), - }).ToList(); - - _requirement.Permissions = list; + //var data = await _roleModulePermissionServices.RoleModuleMaps(); + //var list = (from item in data + // where item.IsDeleted == false + // orderby item.Id + // select new PermissionItem + // { + // Url = item.Module?.LinkUrl, + // Role = item.Role?.Name.ObjToString(), + // }).ToList(); + + //_requirement.Permissions = list; } var token = JwtToken.BuildJwtToken(claims.ToArray(), _requirement); @@ -206,24 +208,32 @@ namespace Tiobon.Core.Controllers var tokenModel = JwtHelper.SerializeJwt(token); if (tokenModel != null && JwtHelper.customSafeVerify(token) && tokenModel.Uid > 0) { - var user = await _sysUserInfoServices.QueryById(tokenModel.Uid); + var user = await _ghrs_UserServices.QueryById(tokenModel.Uid); var value = User.Claims.SingleOrDefault(s => s.Type == JwtRegisteredClaimNames.Iat)?.Value; - if (value != null && user.CriticalModifyTime > value.ObjToDate()) - return Failed("很抱歉,授权已失效,请重新授权!"); + //if (value != null && user.CriticalModifyTime > value.ObjToDate()) + // return Failed("很抱歉,授权已失效,请重新授权!"); - if (user != null && !(value != null && user.CriticalModifyTime > value.ObjToDate())) + //if (user != null && !(value != null && user.CriticalModifyTime > value.ObjToDate())) + if (user != null) { - var userRoles = await _sysUserInfoServices.GetUserRoleNameStr(user.LoginName, user.LoginPWD); + //var userRoles = await _ghrs_UserServices.GetUserRoleNameStr(user.LoginName, user.LoginPWD); //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色 - var claims = new List - { - new Claim(ClaimTypes.Name, user.LoginName), - new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid.ObjToString()), - new Claim(JwtRegisteredClaimNames.Iat, DateTime.Now.DateToTimeStamp()), - new Claim(ClaimTypes.Expiration, - DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString()) - }; - claims.AddRange(userRoles.Split(',').Select(s => new Claim(ClaimTypes.Role, s))); + //var claims = new List + //{ + // new Claim(ClaimTypes.Name, user.LoginName), + // new Claim(JwtRegisteredClaimNames.Jti, tokenModel.Uid.ObjToString()), + // new Claim(JwtRegisteredClaimNames.Iat, DateTime.Now.DateToTimeStamp()), + // new Claim(ClaimTypes.Expiration, + // DateTime.Now.AddSeconds(_requirement.Expiration.TotalSeconds).ToString()) + //}; + var claims = new List{ + new Claim(ClaimTypes.Name, user.UserId.ToString()), + new Claim(JwtRegisteredClaimNames.Jti, user.UserId.ToString()), + new Claim("TenantId", "0"), + new Claim(JwtRegisteredClaimNames.Iat, DateTime.Now.DateToTimeStamp()), + 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); diff --git a/Tiobon.Core.Tests/Controller_Test/LoginController_Should.cs b/Tiobon.Core.Tests/Controller_Test/LoginController_Should.cs index f17bdffc..15ee2577 100644 --- a/Tiobon.Core.Tests/Controller_Test/LoginController_Should.cs +++ b/Tiobon.Core.Tests/Controller_Test/LoginController_Should.cs @@ -7,72 +7,72 @@ using Microsoft.Extensions.Logging; namespace Tiobon.Core.Tests { - public class LoginController_Should - { - LoginController loginController; + public class LoginController_Should + { + LoginController loginController; - private readonly ISysUserInfoServices _sysUserInfoServices; - private readonly IUserRoleServices _userRoleServices; - private readonly IRoleServices _roleServices; - private readonly PermissionRequirement _requirement; - private readonly IRoleModulePermissionServices _roleModulePermissionServices; - private readonly ILogger _logger; + private readonly IGhrs_UserServices _ghrs_UserServices; + private readonly IUserRoleServices _userRoleServices; + private readonly IRoleServices _roleServices; + private readonly PermissionRequirement _requirement; + private readonly IRoleModulePermissionServices _roleModulePermissionServices; + private readonly ILogger _logger; - DI_Test dI_Test = new DI_Test(); + DI_Test dI_Test = new DI_Test(); - public LoginController_Should() - { - var container = dI_Test.DICollections(); - _sysUserInfoServices = container.Resolve(); - _userRoleServices = container.Resolve(); - _roleServices = container.Resolve(); - _requirement = container.Resolve(); - _roleModulePermissionServices = container.Resolve(); - _logger = container.Resolve>(); - loginController = new LoginController(_sysUserInfoServices, _userRoleServices, _roleServices, _requirement, - _roleModulePermissionServices, _logger); - } + public LoginController_Should() + { + var container = dI_Test.DICollections(); + _ghrs_UserServices = container.Resolve(); + _userRoleServices = container.Resolve(); + _roleServices = container.Resolve(); + _requirement = container.Resolve(); + _roleModulePermissionServices = container.Resolve(); + _logger = container.Resolve>(); + loginController = new LoginController(_ghrs_UserServices, _userRoleServices, _roleServices, _requirement, + _roleModulePermissionServices, _logger); + } - [Fact] - public void GetJwtStrTest() - { - var data = loginController.GetJwtStr("test", "test"); + [Fact] + public void GetJwtStrTest() + { + var data = loginController.GetJwtStr("test", "test"); - Assert.NotNull(data); - } + Assert.NotNull(data); + } - [Fact] - public void GetJwtStrForNuxtTest() - { - object Tiobons = loginController.GetJwtStrForNuxt("test", "test"); + [Fact] + public void GetJwtStrForNuxtTest() + { + object Tiobons = loginController.GetJwtStrForNuxt("test", "test"); - Assert.NotNull(Tiobons); - } + Assert.NotNull(Tiobons); + } - [Fact] - public async void GetJwtToken3Test() - { - var res = await loginController.GetJwtToken3("test", "test"); + [Fact] + public async void GetJwtToken3Test() + { + var res = await loginController.GetJwtToken3("test", "test"); - Assert.NotNull(res); - } + Assert.NotNull(res); + } - [Fact] - public async void RefreshTokenTest() - { - var res = await loginController.RefreshToken( - "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoidGVzdCIsImp0aSI6IjgiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2V4cGlyYXRpb24iOiIyMDE5LzEwLzE4IDIzOjI2OjQ5IiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjoiQWRtaW5UZXN0IiwibmJmIjoxNTcxNDA4ODA5LCJleHAiOjE1NzE0MTI0MDksImlzcyI6IkJsb2cuQ29yZSIsImF1ZCI6IndyIn0.oz-SPz6UCL78fM09bUecw5rmjcNYEY9dWGtuPs2gdBg"); + [Fact] + public async void RefreshTokenTest() + { + var res = await loginController.RefreshToken( + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoidGVzdCIsImp0aSI6IjgiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2V4cGlyYXRpb24iOiIyMDE5LzEwLzE4IDIzOjI2OjQ5IiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjoiQWRtaW5UZXN0IiwibmJmIjoxNTcxNDA4ODA5LCJleHAiOjE1NzE0MTI0MDksImlzcyI6IkJsb2cuQ29yZSIsImF1ZCI6IndyIn0.oz-SPz6UCL78fM09bUecw5rmjcNYEY9dWGtuPs2gdBg"); - Assert.NotNull(res); - } + Assert.NotNull(res); + } - [Fact] - public void Md5PasswordTest() - { - var res = loginController.Md5Password("test"); + [Fact] + public void Md5PasswordTest() + { + var res = loginController.Md5Password("test"); - Assert.NotNull(res); - } - } + Assert.NotNull(res); + } + } } \ No newline at end of file