通常我在我的项目中使用带有自定义登录表单和 bean 的 Java EE 身份验证。因此,我将 Glassfish 配置为从数据库 (JDBC) 获取用户/密码,创建一个调用 HttpServletRequest 的 login() 方法的 RequestScoped bean(名为“LoginBean”)上的 login() 方法的 jsf 表单。
当登录尝试成功时,我将用户信息设置在一个注入到 LoginBean 中的 SessionScoped bean 中,我将其命名为“LoginService”。然后,在许多其他网站页面和 bean 中,我总是通过注入 LoginService 并访问它的数据来使用这些数据。
一切都很好,但我注意到如果用户进入登录页面,即使它尚未尝试登录,也会创建一个会话。我的猜测是它的发生是因为 LoginService 在对象创建时总是被注入到 LoginBean 中。
正因为如此,我有两个问题:
- 我应该关心这个会话吗?这会导致任何问题吗?
- 在每次用户访问登录页面时不创建会话的情况下进行此自定义登录的最佳方法是什么?我的意思是,我可以在成功后在查询字符串上传递用户信息,但这太可怕了。:)
谢谢。