Tomcat现有项目设置了必须登录获取token,如何实现自定义jsp无需token
时间: 2024-05-11 11:14:21 浏览: 141
Tomcat&Beanutils&用户登录案例.rar
要实现自定义 JSP 无需 token,可以在 Tomcat 的配置文件中添加一个过滤器,该过滤器将检查请求的 URL,如果请求的是自定义 JSP,则不需要 token,否则需要 token。
以下是一个简单的示例过滤器实现:
1. 创建一个名为 `TokenFilter` 的 Java 类,实现 `javax.servlet.Filter` 接口。
```java
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class TokenFilter implements Filter {
private static final String[] IGNORED_PATHS = {"/custom.jsp"};
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String requestURI = request.getRequestURI();
boolean ignored = false;
for (String path : IGNORED_PATHS) {
if (requestURI.endsWith(path)) {
ignored = true;
break;
}
}
if (ignored) {
filterChain.doFilter(request, response);
} else {
// 检查 token 是否存在,如果存在则放行,否则重定向到登录页面
String token = request.getParameter("token");
if (token != null && !token.isEmpty()) {
filterChain.doFilter(request, response);
} else {
response.sendRedirect("/login.jsp");
}
}
}
@Override
public void destroy() {
}
}
```
2. 在 Tomcat 的 `web.xml` 文件中添加过滤器和过滤器映射。
```xml
<filter>
<filter-name>TokenFilter</filter-name>
<filter-class>com.example.TokenFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TokenFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
在上面的示例中,`IGNORED_PATHS` 数组包含了所有不需要 token 的 URL,例如 `/custom.jsp`。当请求的 URL 不在忽略列表中时,过滤器会检查请求参数中是否包含名为 `token` 的参数,如果存在则放行,否则重定向到登录页面。
请注意,这只是一个简单的示例过滤器实现,实际情况可能需要根据具体的业务逻辑进行修改。
阅读全文