我试图更好地了解Tomcat如何处理登录操作。我关于这个主题的课程相当黯淡,所以我有很多疑问。
1)假设我想为站点创建登录,并且我将凭据存储在mySQL数据库中。为了配置Tomcat在互联网上使用数据库的那些教程,以便轻松"。我不清楚的是如何实际处理身份验证。
Tomcat是100%handeld吗?这就是我所理解的。基本上在我的表单中,我将使用两个名为j_username和j_password的文本字段。这样Tomcat一旦查看HTTP请求,就会注意到这两个字段,它会自动检查用户名/密码组合是否与数据库中的任何内容匹配,如果是,它会让发出请求的客户端访问它想要的页面(页面保护是通过使用部署描述符中的标记来完成的,您可以在其中指定要保护的页面以及哪些用户角色可以访问它们。)
因此,如果我的受保护资源(无论是servlet还是JSP)收到请求,我百分百肯定它是由经过Tomcat并被发现具有访问该页面的权限的用户制作的。因此,在servlet中,我不必分析请求以获取用户的用户名/密码,在我的数据库中手动检查它们,然后如果我找到匹配则让servlet继续。它已经由Tomcat完成了,对吧?
2)如果1是正确的,我如何处理被访问页面的动态内容? 假设在这个受保护的页面中,我想显示登录用户所拥有的汽车列表。
要找到她的车,我需要查看数据库。但是我该怎么做?我需要至少一些数据来建立我的查询,比如用户名。 我查看了HTTPServletRequest文档,发现了getRemoteUser()方法:如果用户已经过身份验证,则返回发出此请求的用户的登录名;如果用户未经过身份验证,则返回null。
我可以使用它来检索用户名,将其插入我的查询并在数据库中搜索它吗?并且还使用它来执行其他操作,例如显示"欢迎回用户名!"就像在我的页面顶部和这样的事情?
看起来很容易,这让我有点失望,啊哈。
另外,如何处理会话?它是由Tomcat处理还是我必须做更多的事情?
答案 0 :(得分:1)
- ...基本上在我的表单中,我将使用两个名为j_username和j_password的文本字段。这样Tomcat一旦查看HTTP请求,就会注意到这两个字段,它会自动检查用户名/密码组合是否与数据库中的任何内容匹配,如果是,它会让发出请求的客户端访问它想要的页面(页面保护是通过使用部署描述符中的标记来完成的,您可以在其中指定要保护的页面以及哪些用户角色可以访问它们。)
醇>
这是真的提供登录表单已发布到/j_security_check
。
因此,如果我的受保护资源(无论是servlet还是JSP)收到请求,我百分百肯定它是由经过Tomcat并被发现具有访问该页面的权限的用户制作的。因此,在servlet中,我不必分析请求以获取用户的用户名/密码,在我的数据库中手动检查它们然后如果我找到匹配则让servlet继续。它已经由Tomcat完成了,对吧?
右。
2)...我找到了
getRemoteUser()
方法:'如果用户已经过身份验证,则返回发出此请求的用户的登录名;如果用户未经过身份验证,则返回null。我可以使用它来检索用户名,将其插入我的查询并在数据库中搜索它吗?
是。它包含与登录表单中包含的j_username
相同的内容。
并使用它来执行其他操作,例如显示“欢迎回用户名!”就像在我的页面顶部和这样的事情?
不确定
另外,如何处理会话?它是由Tomcat处理的
是
还是我必须做更多的事情?
除非您想要:例如,从默认值更改其到期时间。或者使其无效或者将用户退出。