不用Shiro实现权限拦截:使用Spring拦截器
可以使用Spring框架提供的拦截器机制来实现权限拦截。
步骤如下:
-
定义一个拦截器类,实现HandlerInterceptor接口。
-
在拦截器类中编写权限校验逻辑。
-
在Spring配置文件中配置拦截器,并指定需要拦截的请求路径。
-
在需要进行权限校验的Controller方法上添加@Interceptor注解,指定需要使用的拦截器。
-
当请求路径匹配到拦截器配置的路径时,拦截器会拦截请求并执行权限校验逻辑。
示例代码如下:
- 定义拦截器类
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;
}
}
- 在Spring配置文件中配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.AuthInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
- 在Controller方法上添加@Interceptor注解
@RequestMapping("/user/list")
@Interceptor("authInterceptor")
public String userList(Model model) {
// TODO: 处理业务逻辑
return "user_list";
}
当请求路径为/user/list时,会先经过AuthInterceptor拦截器进行权限校验,如果权限校验通过,则执行userList方法,否则返回无权限页面。
原文地址: https://www.cveoy.top/t/topic/oaAs 著作权归作者所有。请勿转载和采集!