优化登录鉴权验证

v1.4.1
hiparker 4 years ago
parent 367f018534
commit 7063313c05

@ -48,6 +48,8 @@ public enum TokenMsg implements BaseMsg {
EXCEPTION_LOGIN_TENANT_NOT_USABLE(12105,"租户未启用,请联系管理员"),
EXCEPTION_LOGIN_NULL(12106,"请输入账号密码"),
EXCEPTION_LOGIN_DECRYPT(12107,"登录账号密码解析失败"),
EXCEPTION_USER_ROLE_NOT_NULL(12108,"用户暂无角色,请设置后登录"),
EXCEPTION_USER_MENU_NOT_NULL(12109,"用户暂无角色菜单,请设置后登录"),
/**
*

@ -60,7 +60,6 @@ public enum SystemMsg implements BaseMsg {
EXCEPTION_USER_PASSWORD_EQ_ERROR(20302,"旧密码不可以等于新密码"),
EXCEPTION_USER_ID_NOT_NULL(20303,"用户Id不可为空"),
EXCEPTION_USER_ROLES_ERROR(20304,"用户角色设置失败"),
EXCEPTION_USER_MENU_NOT_NULL(20305,"用户暂无角色菜单,请设置后登录"),
EXCEPTION_USER_NO_UNIQUE(20306,"该工号已存在"),
EXCEPTION_ORG_NOT_NULL(20307,"组织不可为空"),
EXCEPTION_USER_ORG_ERROR(20308,"用户组织设置失败"),

@ -15,12 +15,14 @@
*/
package org.opsli.modulars.system.login.web;
import cn.hutool.core.collection.CollUtil;
import com.google.common.collect.Maps;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.opsli.api.base.result.ResultVo;
import org.opsli.api.wrapper.system.menu.MenuModel;
import org.opsli.api.wrapper.system.options.OptionsModel;
import org.opsli.api.wrapper.system.tenant.TenantModel;
import org.opsli.api.wrapper.system.user.UserModel;
@ -48,6 +50,7 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
@ -132,6 +135,20 @@ public class LoginRestController {
CaptchaUtil.delCaptcha(form.getUuid());
}
// 检测用户是否有角色
List<String> roleModelList = UserUtil.getUserRolesByUserId(user.getId());
if(CollUtil.isEmpty(roleModelList)){
// 用户暂无角色,请设置后登录
throw new TokenException(TokenMsg.EXCEPTION_USER_ROLE_NOT_NULL);
}
// 检测用户是否有角色菜单
List<MenuModel> menuModelList = UserUtil.getMenuListByUserId(user.getId());
if(CollUtil.isEmpty(menuModelList)){
// 用户暂无角色菜单,请设置后登录
throw new TokenException(TokenMsg.EXCEPTION_USER_MENU_NOT_NULL);
}
//生成token并保存到Redis
ResultVo<UserTokenUtil.TokenRet> resultVo = UserTokenUtil.createToken(user);
if(resultVo.isSuccess()){

@ -114,10 +114,6 @@ public class MenuRestController extends BaseRestController<SysMenu, MenuModel, I
// 获得当前用户菜单
List<MenuModel> menuModelList = iUserService.getMenuAllListByUserId(user.getId());
if(CollUtil.isEmpty(menuModelList)){
// 用户暂无角色菜单,请设置后登录
throw new ServiceException(SystemMsg.EXCEPTION_USER_MENU_NOT_NULL);
}
// 这里有坑 如果 为 菜单数据 且 组件(Component)地址为空 不会跳转到主页 也不报错
// 修复菜单问题导致无法跳转主页
@ -146,10 +142,6 @@ public class MenuRestController extends BaseRestController<SysMenu, MenuModel, I
// 获得用户 对应菜单
List<MenuModel> menuModelList = UserUtil.getMenuListByUserId(user.getId());
if(CollUtil.isEmpty(menuModelList)){
// 用户暂无角色菜单,请设置后登录
throw new ServiceException(SystemMsg.EXCEPTION_USER_MENU_NOT_NULL);
}
// 这里有坑 如果 为 菜单数据 且 组件(Component)地址为空 不会跳转到主页 也不报错
// 修复菜单问题导致无法跳转主页

Loading…
Cancel
Save