Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 您如何识别和转发;“未登录”;用户返回登录页面?_Java_Jsp_Session_Servlets_Deployment Descriptor - Fatal编程技术网

Java 您如何识别和转发;“未登录”;用户返回登录页面?

Java 您如何识别和转发;“未登录”;用户返回登录页面?,java,jsp,session,servlets,deployment-descriptor,Java,Jsp,Session,Servlets,Deployment Descriptor,我使用JSP、Servlet和JDBC(无框架)创建了一个web应用程序。我们有基于表单的身份验证安全性,用户必须首先登录。用户名和密码在数据库中,与任何基于internet的web应用程序一样,用户名和密码由用户自己创建 我们使用了Java会话来识别用户,并确定该用户是否已登录。我们所做的是在每个servlet页面和JSP页面中检查会话是否是新的,会话是否可用,如果有任何问题,我们将用户转发回登录页面。这可以保护直接访问URL的用户,如www.xxx.com/questions?idEmplo

我使用JSP、Servlet和JDBC(无框架)创建了一个web应用程序。我们有基于表单的身份验证安全性,用户必须首先登录。用户名和密码在数据库中,与任何基于internet的web应用程序一样,用户名和密码由用户自己创建

我们使用了
Java会话
来识别用户,并确定该用户是否已登录。我们所做的是在每个servlet页面和JSP页面中检查会话是否是新的,会话是否可用,如果有任何问题,我们将用户转发回登录页面。这可以保护直接访问URL的用户,如
www.xxx.com/questions?idEmployee=1

现在问题来了。我知道我们不必在每个页面中编写java代码来检查用户是否登录。我们可以用部署描述符做一些事情,对吗?因此,它可以自动检查内容并转发给用户


然而,我在谷歌上找到的答案都是关于将用户名和密码硬编码到部署描述符,所以这对我们来说毫无用处。那么,我们如何在不将用户名和密码硬编码到部署描述符的情况下解决这个问题呢?

最好的解决方案是编写一个过滤器类(Servlet),避免重写每个JSP文件的代码

在filter类中,您可以验证会话。

  • 选项1:按照其他人的建议,使用
    过滤器
  • 选项2:编写一个jsp来验证会话,并在需要时重定向用户。现在在重置需要有效会话的jsp时导入所述jsp

您通常在筛选器中执行的这些操作。@RohitJain:没有得到。另外,不要使用会话存在的事实来知道用户是否已登录。在会话中存储标志或基本登录用户信息,并使用此标志/用户信息的存在来决定。即使对于未登录的用户,也可以完美地使用会话。顺便说一句,这是JSP的默认设置。@JBNizet:你的意思是保存可以识别用户信息的信息,对吗?是的,我们会在会话中保存用户名和密码。过滤器会保护servlet,但是jsp呢?过滤器会保护servlet,但是jsp呢?