SpringMVC权限和资源的安全访问(二)

本文介绍如何使用SpringMVC的拦截器实现权限安全访问。通过自定义拦截器类并覆盖preHandle方法,实现对特定URL的权限验证。此外,还介绍了如何在SpringMVC配置文件中设置拦截器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要讲解SpringMVC拦截器实现的权限安全访问


SpringMVC的拦截器HandlerInteceptorAdapter,实现其中的三个方法 preHandler,postHandler,completion三个方法

preHandler在业务处理前调用,可以加一些权限验证方法,比如session验证、token验证, 如果验证true,则往下进行下一个interceptor;如果false,从当前拦截器往前,执行前面拦截器的afterCompletion的方法,退出拦截器链

postHandler在处理逻辑完,生成视图前执行

afterCompletion视图呈现完成后,相当于完成一个request->respone请求,可以用于完成资源的清理


所以我们实现这三个方法,(个人认为其实只需要实现preHandler即可)实现自己的权限逻辑管理


定义一个类 继承 HandlerInceptorAdapter,实现上面的三个方法,在preHandler方法里,要注意有些页面不需要验证,比如login  、logout,对于这些请求直接放行,也就是return true

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    // 定义一些不需要认证的页面,直接放行
    if (request.getRequestURI().contains("login") || request.getRequestURI().contains("logout")) {
        return true;
    }

    // 需要认证的页面,判断session
    UserInfo userInfo = (UserInfo)request.getSession().getAttribute("activeUser");
    if (userInfo == null) {
        response.sendRedirect("loginPage");
        return false;
    }

    return true;
}

然后在springMVC.xml(名字自己的,就是你配置在web.xml里面springMVC DispatcherServlet对应的spring配置文件)拦截器配置

<!-- spring 拦截器 -->
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/authen/**"/>
        <mvc:mapping path="/goods/**"/>
        <bean class="com.think.interceptor.LoginInterceptor" />
    </mvc:interceptor>

    <mvc:interceptor>
        <mvc:mapping path="/goods/**"/>
        <bean class="com.think.interceptor.PermissionInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

<mvc:interceptors>标签下可以配置多个拦截器,<mvc:mapping path=""> 表示你对那些请求URI拦截,bean表示对拦截的这些请求由那个拦截器类处理



下一篇学习下权限验证框架shiro





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值