可以使用Spring框架提供的拦截器机制来实现权限拦截。

步骤如下:

  1. 定义一个拦截器类,实现HandlerInterceptor接口。

  2. 在拦截器类中编写权限校验逻辑。

  3. 在Spring配置文件中配置拦截器,并指定需要拦截的请求路径。

  4. 在需要进行权限校验的Controller方法上添加@Interceptor注解,指定需要使用的拦截器。

  5. 当请求路径匹配到拦截器配置的路径时,拦截器会拦截请求并执行权限校验逻辑。

示例代码如下:

  1. 定义拦截器类
public class AuthInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 获取当前用户信息
        User loginUser = getCurrentUser(request);
        if (loginUser == null) {
            // 用户未登录,跳转到登录页面
            response.sendRedirect("/login");
            return false;
        }
        // 根据请求路径和用户角色进行权限校验
        if (!checkPermission(request.getRequestURI(), loginUser.getRole())) {
            // 权限校验失败,返回无权限页面
            response.sendRedirect("/unauthorized");
            return false;
        }
        // 权限校验通过,放行请求
        return true;
    }

    private User getCurrentUser(HttpServletRequest request) {
        // 从Session中获取当前用户信息
        return (User) request.getSession().getAttribute("currentUser");
    }

    private boolean checkPermission(String requestUri, String userRole) {
        // 根据请求路径和用户角色进行权限校验
        // TODO: 实现权限校验逻辑
        return true;
    }
}
  1. 在Spring配置文件中配置拦截器
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.example.AuthInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
  1. 在Controller方法上添加@Interceptor注解
@RequestMapping("/user/list")
@Interceptor("authInterceptor")
public String userList(Model model) {
    // TODO: 处理业务逻辑
    return "user_list";
}

当请求路径为/user/list时,会先经过AuthInterceptor拦截器进行权限校验,如果权限校验通过,则执行userList方法,否则返回无权限页面。

不用Shiro实现权限拦截:使用Spring拦截器

原文地址: https://www.cveoy.top/t/topic/oaAs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录