gpt4 book ai didi

java - 如何在 servlet jsp 中实现生产就绪的登录注销功能

转载 作者:行者123 更新时间:2023-12-02 13:11:46 25 4
gpt4 key购买 nike

我的问题很简单 - 如何在 servlet jsp 中实现登录-注销?

以下是用例...

  • 我在数据库中有一个用户表,其中包含电子邮件、用户名和密码
  • 我有一个映射的 bean 对象 - java 中的用户具有电子邮件、用户名、密码属性
  • 我只是想通过验证电子邮件和密码来登录,但是
  • 一旦我登录然后注销,当我单击后退按钮时,它不应该保留 session 。
    • 它不应该给出任何警告,而只是要求登录
    • 如果我复制粘贴受限资源的链接,它应该要求登录

我经历过的所有解决方案...

  • 有人说使用角色和 bla bla 来实现 tomcat 安全...但是我认为我不应该在某些 tomcat 配置文件中设置用户名、密码。 Bcz 详细信息在数据库表中
  • 有些人要求实现无缓存、pragma bla bla...但从来没有工作
  • 禁用后退按钮是愚蠢的事情

**

我期待你们提供什么帮助......?

**

  • 是否有任何第三方 API 可以执行此操作?
  • 如何在生产就绪的应用程序中实现这些内容?
  • 对于上述场景,我是否应该使用 JAAS 或任何其他安全流程,或者什么
  • 请给我一些提示或解决方案,我应该如何在 servlet-jsp 中实现生产就绪的登录注销

我在互联网上搜索过,但最终得到的是简单的登录示例或 tomcat 安全角色等。没有人给出实际的解决方案。请不要说这个问题与本论坛无关。

谢谢

最佳答案

发生这种情况是因为浏览器缓存了正在加载的网页,您可以通过使用过滤器并告诉浏览器不要缓存网页来防止这种情况,如下所示。Filter的doFilter方法

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);

HttpSession session = request.getSession(false);//don't create if session doesn't exist.

if (session==null || session.getAttribute("username") == null) {
RequestDispatcher rd=request.getRequestDispatcher("login");//dispatch it to your desired page i.e login page
rd.forward(request, response);
} else {
chain.doFilter(req, res);
}
}

您应该在 web.xml 中配置此过滤器,或者使用要过滤的 url 模式的注释。有关更多详细信息,请参阅文档。

关于java - 如何在 servlet jsp 中实现生产就绪的登录注销功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43932055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com