qq_45780748 2024-05-14 15:13 采纳率: 50%
浏览 4
已结题

jwt多角色鉴权问题

@Component
public class JwtInterceptor implements HandlerInterceptor {

    private static final Logger log= LoggerFactory.getLogger(JwtInterceptor.class);

    @Resource
    private AdminService adminService;
    @Resource
    private UService uService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)  {
        String token=request.getHeader("token");
        if(StrUtil.isBlank(token)){
            token=request.getParameter("token");
        }
        if(StrUtil.isBlank(token)){
            throw new CustomException("请登录账号后在访问");
        }
        String adminId;
        Admin admin;
        try{
            adminId= JWT.decode(token).getAudience().get(0);
            admin=adminService.findById(Integer.parseInt(adminId));
        }catch (Exception e){
            String ErrMsg="token验证失败,请重新登录";
            log.error(ErrMsg+"token="+token,e);
            throw new CustomException(ErrMsg);
        }
        if(admin==null){
            throw  new CustomException("用户不存在,请重新登录");
        }
        try{
            JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256(admin.getPassword())).build();
            jwtVerifier.verify(token);
        }catch (JWTVerificationException e){
            throw  new CustomException("token验证失败,请重新登录");
        }
        return true;
    }
}

如果我需要多添加一个实体user进行jwt鉴权该如何修改代码

  • 写回答

2条回答 默认 最新

  • 专家-皆知 2024-05-14 15:13
    关注

    在JWT中嵌入用户角色信息,校验时按角色授权。

    以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月2日
  • 专家已采纳回答 5月25日
  • 创建了问题 5月14日

悬赏问题

  • ¥15 Finalsheel登入ssh一直重复要求输入密码
  • ¥20 matlab作业不太懂呀有问题能给个代码吗
  • ¥15 自制电路图为何无法驱动ESP01S?
  • ¥15 前端加access数据库
  • ¥15 ARCGIS 多值提取到点 ERROR 999999
  • ¥15 mysql异常断电, [MY-011971] [InnoDB]
  • ¥15 uni.onBluetoothDeviceFound熄屏不运行
  • ¥35 关于shodan搜索网络摄像头的各种方法详解
  • ¥15 求PHDA糖尿病并发症数据集,有偿
  • ¥15 为什么AVL fire DVI 界面里面的response Editor project 中的Summary result 点不了