java - 如何在速度工具中获取 HttpServletRequest?

标签 java tomcat authentication servlets velocity

我想实现一个速度工具,它提供了一种方法来查明用户是否登录。我正在使用 VelocityLayoutServlet 以便在每个请求上呈现模板。

我的 velocity-tools.xml 看起来像这样:

<tools>
    <toolbox scope="request">
       <tool key="user" class="UserTool"/>
    </toolbox>
</tools>

我的工具类:

public class UserTool{

    // How do I get this object?
    private HttpServletRequest request;

    public boolean isLoggedIn(){
        return !request.getUserPrincipal().getName().isEmpty();
    }

}

如何在我的工具中获取 HttpServletRequest 对象?

仅供引用:我正在使用容器管理的身份验证。

最佳答案

这有两个缺陷:

  1. 如果请求是匿名的,您将收到 NullPointerException
  2. 您的工具是多余的,因为 Velocity 捆绑的 Servlet 应该已将请求添加到上下文中:$request.remoteUser

范围 request 不表示 HTTP 请求。它只是简单地说,这个工具会根据每个渲染请求重新创建。

关于java - 如何在速度工具中获取 HttpServletRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36083516/

相关文章:

java - 我一辈子都无法理解类路径

java - XSD中是否允许内部元素和上层元素同名?

java - 将 CSS 文件附加到 Tomcat 中的 Java Servlet

java - Apache/Tomcat 上的 Log4j 不工作

python - 通过 Lyft Api 脚本自动执行三因素身份验证

authentication - Sitecore:sitecore 域用户统计信息

java - 按照惯例, View 和 View 组是否应该在 Activity 中声明为实例变量或局部变量?

java - 如何使 spring boot 嵌入式 tomcat 为基本 url 返回 200 OK?

java - 在没有 DOS 漏洞的 tomcat 服务器中限制每个客户端的每秒事务数 (TPS)

python - 限制对 Python App Engine 中的静态文件的访问