Java 条件身份验证:如何在servlet页面上有条件地显示登录

Java 条件身份验证:如何在servlet页面上有条件地显示登录,java,tomcat,servlets,authorization,Java,Tomcat,Servlets,Authorization,我正在运行Tomcat 8。目前,我有用户总是需要登录才能看到的页面,以及用户从不需要登录才能看到的页面。这两个案子我都能办到 但现在我需要创建一个用户有时必须登录才能看到的页面(基于所请求内容的数据/配置) 有鉴于此,我不能将servlet端点扔到web.xml web资源集合中,它不会以这种方式工作 我曾尝试使用j_securtiy_check的标准连接从我的servlet返回登录视图,但当服务返回时,它看起来不起作用。为了解决我的问题,下面是我所做的 在我的servlet中,我获取需要呈现

我正在运行Tomcat 8。目前,我有用户总是需要登录才能看到的页面,以及用户从不需要登录才能看到的页面。这两个案子我都能办到

但现在我需要创建一个用户有时必须登录才能看到的页面(基于所请求内容的数据/配置)

有鉴于此,我不能将servlet端点扔到web.xml web资源集合中,它不会以这种方式工作


我曾尝试使用j_securtiy_check的标准连接从我的servlet返回登录视图,但当服务返回时,它看起来不起作用。

为了解决我的问题,下面是我所做的

在我的servlet中,我获取需要呈现的对象的数据,如果该对象声明用户需要通过身份验证才能查看,我将使用request.getRemoteUser()检查身份验证

如果找不到用户,我将重定向到一个带有新servlet的安全url。url将在url中有一个?return=myurl。在本例中,将显示登录页面,新servlet将看到返回url并重定向回原始页面

原始页面现在再次执行用户查找,但这次用户已登录


这不是理想的解决方案,但确实有效。

从servlet转发到登录视图时会发生什么情况?我不是转发到登录视图,而是返回登录视图(url不变)。提交登录表单后,我再次收到请求,并且没有从request.getRemoteUser()返回任何用户。