用户成功登录后,我在servlet中打开了会话:
HttpSession session = request.getSession(true);
session.setAttribute("name", name);
然后我写了logout.jsp来终止会话:
<%session.invalidate();%>
要检查会话是否有效,我正在这样做:
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");
但是它不起作用,即使在session.invalidate之后,我也正在使会话有效。有谁知道我在哪里做错了?
您应该调用session.getSession(false)-如果没有当前会话,则返回null。
根据文档
HttpSession#getSession(boolean create)
-create-
如果需要,则为该请求创建一个新会话;为true;如果没有当前会话,则返回false。
因此,会话值检查的正确方法是-
HttpSession session = request.getSession(false);
if(session!=null)
session.setAttribute("name", name);
并且一旦您使会话无效-
HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
我们正在使用Spring安全OAuth2保护REST服务。应用程序可以调用、或终结点。令牌和rest api终结点是无状态的,不需要会话。 我们可以在用户经过身份验证后使会话无效吗?如果是,最好的方法是什么。我们希望用户在调用时始终登录。当前,每当会话存在时,对的调用都会跳过身份验证。
问题内容: 我在2个不同的服务器中有2个应用程序-Tomcat(基本上是.WAR文件)和jBoss中的EAR。 EAR是可重用的应用程序,在这里我将对用户进行身份验证并将控件发送回Tomcat上的应用程序。进行身份验证时,我正在jBoss应用程序上创建一个会话对象。 当我将控件发送回Tomcat上的应用程序时,我将询问用户是否要注销身份验证应用程序。如果用户按下“是”按钮,我将不得不从身份验证应用
null 一些重要注意事项: 我们有传输安全性(HTTPS及其最好的朋友); 在窗帘后面,web应用程序代表当前用户将大量操作委托给外部服务(这些系统确实将Bob识别为其用户之一)--这意味着我们必须将Bob的凭据转发给它们。 现在,我们如何(在每个请求上)对Bob进行身份验证?哪一种方法会是实施这样的事情的合理方法呢? null null 非常感谢您花时间阅读以下内容:)
问题内容: 如何检查会话是否无效?API中没有方法。 一样吗?如果没有,有什么区别? 问题答案: 如果您想根据请求知道它是否有效: 如果您存储了对该会话的引用并需要验证,我会
问题内容: 我设计了一个使用AJAX的网站。我有一个名为store.php的PHP页面,该页面接受POST方法发送的数据并将其存储在数据库中。 如何在store.php中实现身份验证?我只希望登录到我的网站的用户使用store.php。 目前,我正在使用htaccess重定向对store.php的请求,但我认为这不是一个好的解决方案。 问题答案: 对服务器脚本的任何AJAX调用仍将在请求中包含会话
我正在构建一个API,并试图在多个上下文中解决身份验证问题。 API需要为我们创建和部署的客户端应用程序提供服务,并使用密码处理经过身份验证的请求。在每个请求中都发送密码并不是一个好主意,因此首先点击登录endpoint并获得会话ID更有意义。问题中的webapp是用AngularJS编写的,应该在localStorage中跟踪自己的会话,以减轻会话劫持并消除对cookie的依赖以跟踪会话。 we
因此,我尝试使用JSF托管bean上的方法访问HttpSession的属性 但是我得到了一个 为什么啊? 在我的一个会话bean被销毁之前,我需要访问该会话打开的外部服务的连接列表,它们当然存储在会话属性对象上。 我该怎么做?
问题内容: 我正在研究的一个项目使用Spring 2.5和JPA,并将Hibernate用作提供程序。 我的DAO类扩展了JpaDaoSupport,因此我使用getJpaTemplate()方法获取了JpaTemplate。 后端数据库可以通过我的应用程序或第三方应用程序进行更改。 当第三方应用程序更改数据库(主要是配置数据更改)时,我需要为应用程序的用户提供一种使所有JPA会话无效并重新加载新