Shiro拦截器,返回JSON数据

    xiaoxiao2021-03-25  138

    Shiro拦截器,返回JSON数据

    在前后端分离的情况下,后端人员这边是没有页面的。后端只提供接口,返回json,供前段人员调用。

    shiro自带登录过滤器,在拦截到用户未登录的情况下,会重定向到loginUrl。

    如果观看shiro登录过滤器UserFilter的源码,会发现如果用户登录失败会调用这个saveRequestAndRedirectToLogin(request, response)方法进行重定向。

    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { saveRequestAndRedirectToLogin(request, response); return false; }

    方案:继承UserFilter类并重写onAccessDenied方法

    @Component("customUser") public class CustomUserFilter extends UserFilter { /** * 拦截时返回 JSON,而不是跳转到一个loginUrl */ @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; GsonUtil.outPutData(req, res, "用户未登录!"); return false; } }

    这里将自定义过滤器声明为spring中的一个bean @Component("customUser"),在shiro的配置文件中再使用自定义的customUser而别再使用user来配置了。

    转载请注明原文地址: https://ju.6miu.com/read-4533.html

    最新回复(0)