public async Task <LoginOutputDto> Login(LoginInputDto loginInputDto) { var user = _defaultDbContext.MbpUsers.Where(u => u.LoginName == loginInputDto.LoginName).FirstOrDefault(); if (user != null) { if (user.Password != ApplicationHelper.EncryptPwdMd5(loginInputDto.Password)) { return(new LoginOutputDto() { AccessToken = new Jwt(), IsPassPwdCheck = false }); } // 如果是管理员权限就给管理员属性,如果是用户就给用户属性,这里只定义两种角色,一种是超管,一种是普通用户,这里的角色只做身份鉴定,不做鉴权用,方便区分超管类的API和普通用户的API // 安全级别较高的API需要超管的可以单独限定,其他按照全局授权策略来进行 // token会默认添加用户名和登录名,现在根据需要,在这里扩展更多的扩展信息,加入角色名称,用户Id var token = await _jwtBearerService.CreateJwt(loginInputDto.LoginName, loginInputDto.ClientID, new List <Claim>() { new Claim(ClaimTypes.Role, user.IsAdmin?"admin":"user"), // 角色名称,这里的ClaimTypes.Role,可以用来约束基于角色的权限验证 new Claim(ClaimTypes.Sid, user.Id.ToString()) // 登录名 }); return(new LoginOutputDto() { AccessToken = token, Menus = new List <string>(), UserName = user.UserName, Role = user.IsAdmin ? "admin" : "user", IsPassPwdCheck = true }); } return(new LoginOutputDto() { AccessToken = new Jwt(), IsPassPwdCheck = false }); }
public async virtual Task <Jwt> GetToken() { // todo 取出用户的角色 var t = await _jwtBearerService.CreateJwt("123", "lixp", new List <Claim>() { new Claim(ClaimTypes.Role, "admin") }); return(t); }
public async Task <LoginOutputDto> Login(LoginInputDto loginInputDto) { var user = _defaultDbContext.MbpUsers.Where(u => u.LoginName == loginInputDto.LoginName).FirstOrDefault(); if (user != null) { if (user.Password != ApplicationHelper.EncryptPwdMd5(loginInputDto.Password)) { return(new LoginOutputDto() { AccessToken = new Jwt(), IsPassPwdCheck = false }); } // 如果是管理员权限就给管理员属性,如果是用户就给用户属性,这里只定义两种角色,一种是超管,一种是普通用户,这里的角色只做身份鉴定,不做鉴权用 var token = await _jwtBearerService.CreateJwt(loginInputDto.LoginName, loginInputDto.ClientID, new List <Claim>() { new Claim(ClaimTypes.Role, user.IsAdmin?"admin":"user") }); // 取出用户的菜单权限 var menus = (from tuser in _defaultDbContext.Set <MbpUser>() join tuserrole in _defaultDbContext.Set <MbpUserRole>() on tuser.Id equals tuserrole.UserId join trole in _defaultDbContext.Set <MbpRole>() on tuserrole.RoleId equals trole.Id join trolemenu in _defaultDbContext.Set <MbpRoleMenu>() on trole.Id equals trolemenu.RoleId join tmenu in _defaultDbContext.Set <MbpMenu>() on trolemenu.RoleId equals tmenu.Id select tmenu.Path).ToList(); return(new LoginOutputDto() { AccessToken = token, Menus = menus, UserName = user.UserName, Role = user.IsAdmin ? "admin" : "user", IsPassPwdCheck = true }); } return(new LoginOutputDto() { AccessToken = new Jwt(), IsPassPwdCheck = false }); }