实现shiro认证失败后返回json功能

AccessControlFilter

  • 访问控制过滤器,继承PathMatchingFilter过滤器,重写onPreHandle方法.
    实现shiro认证失败后返回json功能
    文章图片
  • isAccessAllowed 是否允许访问
  • onAccessDenied 是否拒绝访问
    我们通过重写上边两个方法来控制过滤逻辑,实现当前的需求,用户不登录点赞提示请登录
  • 定义一个LoginAuthFilter继承AccessControlFilter
  • 前端js渲染脚本
    // 前端弹窗的js代码 private static final String JS = ""; private String loginUrl = "/login";

  • 重写isAccessAllowed方法判断用户是否登录
    @Override protected boolean isAccessAllowed( ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { Subject subject = SecurityUtils.getSubject(); if (null != subject) { if (subject.isRemembered()) { return true; } if (subject.isAuthenticated()) { return true; } } return false; }

  • 【实现shiro认证失败后返回json功能】重写onAccessDenied方法,ajax请求返回错误code,提示‘请登录’否则跳转到登录页
    查看完整代码片段移步
    效果如下图实现shiro认证失败后返回json功能
    文章图片

    点击点赞按钮查看效果

    推荐阅读