ssm jsp跳转jsp_去掉Shiro默认login.jsp跳转

测试过程中,发现shiro在认证不通过时会自动跳转到login.jsp页面,然后login.jsp界面找不到,会出现404的报错,但是本项目是前后端分离的项目,不需要shiro帮我们跳转啊!

还好shiro的权限验证是基于过滤器实现的

解决如下:

1 增加过滤器    LoginFilter

/** * shiro登录过滤器 * 默认情况下 如果shiro验证失败 会进入到login.jsp的路径 但是目前不需要这么跳转 */public class LoginFilter extends UserFilter {    /**     * 这个方法用于处理未登录时页面重定向的逻辑     * 因此,只要进入了这个方法,就意味着登录失效了     * 我们只需要在这个方法里,给前端返回一个登录失效的状态码即可     * @param request     * @param response     * @throws IOException     */    @Override    protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {        response.setContentType("application/json; charset=utf-8");        ObjectMapper mapper = new ObjectMapper();        // 自定义返回内容        // 本处返回一个自己定义的ResultVo对象        response.getWriter().write(mapper.writeValueAsString(new ResultVo(AppCode.ERROR,"无权访问", AppConstant.NO)));    }}

2 设置ShiroConfig中创建ShiroFilterFactoryBean的Bean

    需要说明一下ShiroFilterFactoryBean中Map中String的含义

  • authc(authentication)拦截器表示需要身份认证通过后才能访问
  • anon(anonymous)拦截器表示匿名访问(即不需要登录即可访问)
  • [urls] 部分的配置,其格式是:“url=拦截器[参数],拦截器[参数]”;

92a92d0d4b26b4823a825674e4fb7048.png

代码如下 :

//Filter工厂,设置对应的过滤条件和跳转条件@Beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {    ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();    shiroFilterFactoryBean.setSecurityManager(securityManager);    //过滤器    Map filters = shiroFilterFactoryBean.getFilters();    filters.put("authc", new LoginFilter());    //权限    Mapmap = new HashMap<>();    //放开一部分权限    //文档的权限    map.put("/doc.html","anon");    map.put("/swagger-resources/**", "anon");    map.put("/webjars/**", "anon");    map.put("/v2/api-docs", "anon");    map.put("/swagger-ui.html", "anon");    //登录/注销的权限    map.put("/employee/login", "anon");    map.put("/employee/logout", "anon");    //登出    // map.put("/logout", "logout");    //对所有用户认证    map.put("/**", "authc");    //登录    //shiroFilterFactoryBean.setLoginUrl("/login");    //首页    //shiroFilterFactoryBean.setSuccessUrl("/index");    //错误页面,认证不通过跳转    //shiroFilterFactoryBean.setUnauthorizedUrl("/error");    shiroFilterFactoryBean.setFilterChainDefinitionMap(map);    return shiroFilterFactoryBean;}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值