关于技术:实现shiro认证失败后返回json功能

7次阅读

共计 823 个字符,预计需要花费 3 分钟才能阅读完成。

AccessControlFilter

  • 访问控制过滤器, 继承 PathMatchingFilter 过滤器, 重写 onPreHandle 办法.
  • isAccessAllowed 是否容许拜访
  • onAccessDenied 是否回绝拜访

    咱们通过重写上边两个办法来管制过滤逻辑, 实现以后的需要, 用户不登录点赞提醒请登录

  • 定义一个 LoginAuthFilter 继承 AccessControlFilter
  • 前端 js 渲染脚本

    // 前端弹窗的 js 代码
    private static final String JS =
        "<script type='text/javascript'>var wp=window.parent; if(wp!=null){while(wp.parent&&wp.parent!==wp){wp=wp.parent;}wp.location.href='%1$s';}else{window.location.href='%1$s';}</script>";
    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;
    }
  • 重写 onAccessDenied 办法,ajax 申请返回谬误 code, 提醒‘请登录’否则跳转到登录页
    查看残缺代码片段移步

    成果如下图


    点击点赞按钮查看成果

正文完
 0