gpt4 book ai didi

java - 过滤器未检索 request.getAttribute()

转载 作者:行者123 更新时间:2023-12-02 00:45:48 24 4
gpt4 key购买 nike

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
String logged = (String) ((HttpServletRequest) request).getAttribute("loginstatus");
if(logged != null) {
out.print("ok");
} else {
out.print("not ok");
}

为什么logged的值总是null

最佳答案

默认情况下,过滤器是在 HTTP 请求上执行的第一个操作。请求属性通常由服务器端代码管理。在此过滤器执行其工作之前,谁/什么应该设置请求属性?

您是否对 HTTP 请求/响应的工作原理感到困惑?当关联的响应完成时,请求将完成/被垃圾处理,包括所有属性。每个后续请求都是一个全新的请求,不包含与前一个请求相同的属性。

您真的不想使用 session 范围吗?登录时执行以下操作:

request.getSession().setAttribute("user", user);

然后在身份验证过滤器中添加以下内容:

if (((HttpServletRequest).getSession().getAttribute("user") != null) {
chain.doFilter(request, response); // Continue.
} else {
((HttpServletResponse) response).sendRedirect("login"); // Redirect to login.
}

另请参阅:

关于java - 过滤器未检索 request.getAttribute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5051927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com