【问题标题】:Detect if user was authenticated检测用户是否经过身份验证
【发布时间】:2014-03-22 19:16:54
【问题描述】:

我正在尝试让我的网站用户对自己进行身份验证,以便能够浏览我的网站。目前,我在 JBOSS AS7 上进行了基于表单的身份验证,并且运行良好。所以,现在我只想解决一些问题。好吧,我将登录页面设置为 /login.jsp,我注意到经过身份验证的用户可以再次导航到该页面并再次登录。我想通过检测用户是否经过身份验证来解决这个问题,如果他是,我想将他重定向到另一个页面(因为登录页面对经过身份验证的用户没有意义)。 如何使用 JSP 做到这一点?我可以直接在 login.jsp 上执行此操作,还是在中间需要一个 servlet?

另外(一个问题的一部分)我怎样才能注销用户?

非常感谢!

【问题讨论】:

    标签: jsp jakarta-ee servlets jboss


    【解决方案1】:

    您有几个问题,这让我认为您应该做的第一件事是花 5-6 个小时阅读入门 J2EE,也许还有 java 集合/核心 java 教程。

    通常网站会在会话中存储登录状态。所以你首先想到的是 session.getAttribute("user");

    这可以指向一个布尔值(是否登录),或者更好的是一个包含当前用户信息的类,其中一个可以是登录状态。

    如果已经登录,则在日志页面中 - 谷歌页面重定向以使它们转到另一个页面(在呈现任何输出之前进行 if 检查 - 没有任何 javascript/css 用于重定向工作)

    对于站点的其余部分,使用过滤器检查用户是否登录最有效,规则如下: 1. 如果用户在 /login 或 /logout 或 /publicArea 什么都不做(无需检查是否登录) 2. 否则如果没有登录则重定向到登录页面

    这种方式不需要在所有jsps中添加这段代码。 Java 过滤器可以配置为针对 *(所有)请求调用。

    要注销,只需删除会话属性或将 pojo 中的布尔值设置为 false。

    Java session

    Redirecting a request using servlets and the "setHeader" method not working

    Java EE tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2014-03-09
      相关资源
      最近更新 更多