我就是这样配置的,要说其他的权限配置,就是我在一个filter中的代码@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { logger.info("uri:" + request.getRequestURI()); //如果是登录接口,直接放行 if ("/admin/system/index/login".equals(request.getRequestURI())) { chain.doFilter(request, response); return; } UsernamePasswordAuthenticationToken authentication = getAuthentication(request); if (null != authentication) { SecurityContextHolder.getContext().setAuthentication(authentication); chain.doFilter(request, response); } else { ResponseUtil.out(response, Result.build(null, ResultCodeEnum.PERMISSION)); } }
时间: 2024-04-15 07:29:47 浏览: 101
根据您提供的代码,您正在使用一个过滤器来进行权限验证。在这个过滤器中,您首先检查请求的URI是否是登录接口,如果是的话就直接放行。如果不是登录接口,您会尝试获取用户的认证信息,并将其设置到Spring Security的上下文中。如果认证信息存在,则继续执行过滤器链,否则返回一个权限错误的响应。
这种方式是一种自定义的权限验证方法,可以用于对请求进行细粒度的控制。在这个过滤器中,您可以根据自己的业务逻辑来进行权限验证,并决定是否放行请求。
需要注意的是,这种方式是在Spring Security之外进行权限验证的,它不会直接受到Spring Security的配置的影响。如果您希望使用Spring Security来管理权限,可以使用Spring Security提供的配置来进行资源放行。
例如,在Spring Security的配置类中,您可以使用 `antMatchers().permitAll()` 来放行指定的资源路径:
```java
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/system/index/login").permitAll()
.anyRequest().authenticated()
// 其他配置...
}
```
上述代码中,使用 `antMatchers().permitAll()` 来放行登录接口,其他请求需要进行身份认证。
这样配置后,Spring Security会自动处理权限验证,并根据您的配置进行资源访问控制。您可以根据具体需求选择适合您的方式来进行权限验证和资源放行。
阅读全文