spring boot项目中当用户没登录时,我想在过滤器直接重定向到登陆页面,可以直接用response.send Redirect吗
时间: 2023-11-25 10:05:18 浏览: 51
在过滤器中,如果你想要重定向到登录页面,可以使用 `HttpServletResponse.sendRedirect()` 方法。这个方法会将请求重定向到指定的 URL,同时也会清空响应缓存并设置响应状态码为 302。
下面是一个示例代码:
```java
public class LoginFilter implements Filter {
private static final String LOGIN_PAGE = "/login";
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(false);
if (session == null || session.getAttribute("user") == null) {
resp.sendRedirect(req.getContextPath() + LOGIN_PAGE);
return;
}
chain.doFilter(request, response);
}
// ...
}
```
在上面的示例中,如果用户未登录,会将请求重定向到 `/login` 页面。请注意,使用 `sendRedirect()` 方法时,URL 必须是相对路径或绝对路径。如果你使用相对路径,它将相对于应用程序的上下文路径。