public class JwtFilter extends AuthenticatingFilter 怎么排除拦截登录的页面
时间: 2024-02-25 16:56:10 浏览: 48
在JwtFilter类中,可以通过重写isAccessAllowed方法实现对登录页面的排除拦截。示例代码如下:
```java
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
HttpServletRequest httpRequest = WebUtils.toHttp(request);
String requestURI = httpRequest.getRequestURI();
// 排除登录页面
if (requestURI.equals("/login")) {
return true;
}
return super.isAccessAllowed(request, response, mappedValue);
}
```
在该方法中,首先将ServletRequest转换为HttpServletRequest,然后获取请求的URI。如果请求的URI与登录页面的URI相同,则直接返回true,表示不需要进行拦截。否则调用父类的isAccessAllowed方法进行拦截。
相关问题
public class JwtFilter extends AuthenticatingFilter 是所有都拦截了吗
`JwtFilter` 继承自 `AuthenticatingFilter`,它是 Shiro 框架中用于认证的过滤器之一。在 Shiro 中,过滤器是通过对请求进行拦截并根据配置进行处理的组件。`AuthenticatingFilter` 用于对需要认证的请求进行拦截,并根据配置进行身份认证。
在 `JwtFilter` 中,`preHandle` 方法用于在请求处理之前进行拦截和处理。在这个方法中,可以根据需要进行一些前置处理,例如校验 JWT 的有效性,设置请求头信息等等。如果 `preHandle` 方法返回 `false`,则表示请求被拒绝,不会继续执行后续的处理。如果返回 `true`,则表示请求通过了认证,可以继续执行后续的处理。
所以,`JwtFilter` 并不是对所有请求都进行拦截了,而是只对需要进行认证的请求进行拦截。在 Shiro 中,可以通过配置来决定哪些请求需要进行认证,哪些请求不需要进行认证。在上面的代码中,根据 `filterRuleMap` 的配置,只有访问路径中包含 `/login/**` 的请求不需要进行认证,其他请求都需要进行认证。因此,`JwtFilter` 实际上只对除 `/login/**` 外的请求进行了拦截和处理。
public class InterceptorConfig extends WebMvcConfigurationSupport
这段代码是在Java中配置拦截器的方式之一。它创建了一个名为InterceptorConfig的类,并继承了WebMvcConfigurationSupport类。WebMvcConfigurationSupport是SpringMVC提供的一个类,它支持自定义配置SpringMVC的一些特性。InterceptorConfig类中可以重写父类的方法,来自定义拦截器的配置。
在这个类中,我们可以通过重写addInterceptors方法,来添加我们自定义的拦截器。该方法会在SpringMVC启动时被调用,我们可以在其中添加我们需要的拦截器,来对请求进行拦截和处理。
需要注意的是,这种方式配置拦截器会覆盖SpringBoot默认的拦截器配置,因此需要手动添加一些默认配置,比如静态资源的访问等。同时,该方式也存在一些局限性,比如在使用@EnableWebMvc注解开启SpringMVC的情况下,就不能使用该方式了。