使特定用户的会话无效

2023-12-02

因此,对于我的网络应用程序,如果我删除当前登录的用户,并且我想使他/她的会话无效。这样,一旦他/她刷新页面或导航,他们就不再登录。我现在的方式是,如果用户成功登录,我会将用户对象存储在我的SessionScoped豆,并存储HttpSession to the Application Map。下面是我的代码

这是我的SessionScoped bean

@PostConstruct
public void init() {
    User user = UserDAO.findById(userId, password);
    Map<String, Object> appMap = FacesContext.getCurrentInstance().
             getExternalContext().getApplicationMap();
    HttpSession session = (HttpSession) FacesContext.getCurrentInstance().
             getExternalContext().getSession(false);
    appMap.put(userId, session);
}

这是正确的做法吗?如果是这样,我该如何清理我的应用程序地图?


这是正确的做法吗?

基本上有两种方法。

  1. 存储HttpSession在应用程序范围内以用户 ID 作为键,这样您就可以获取它的句柄并使之无效。这可能适用于在单个服务器上运行的小型 Web 应用程序,但可能不适用于在服务器集群上运行的 Web 应用程序,具体取决于其配置。

    我只会将其存储在another在应用程序范围中映射,而不是像您那样直接在应用程序范围中映射,以便您可以更轻松地获得所有用户的概述,并且可以保证任意用户 ID 不会与现有应用程序范围的托管 bean 名称冲突, 例如。

  2. 将新的布尔/位列添加到与用户关联的某个数据库表中,该表会在每个 HTTP 请求上进行检查。如果管理员将其设置为true,那么与请求关联的会话将失效,并且数据库中的值将被设置回false.


如何清理我的应用程序地图?

你可以使用HttpSessionListener#sessionDestroyed()为了这。例如。

public void sessionDestroyed(HttpSessionEvent event) {
    User user = (User) event.getSession().getAttribute("user");
    if (user != null) {
        Map<User, HttpSession> logins = (Map<User, HttpSession>) event.getSession().getServletContext().getAttribute("logins");
        logins.remove(user);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使特定用户的会话无效 的相关文章

  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • 无法启动活动?

    在添加异步任务之前 我对代码进行了一些更改 我的应用程序可以正常工作 从远程服务器验证用户名和密码 但在登录成功消息消失时无法启动其他活动 有人建议我添加异步任务 现在我已经添加了该任务 但是当我输入正确的用户名和密码时 它会停止工作 当我
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • Ionic/Cordova 应用程序中的身份验证

    首先 我不是专业人士 在我成为一名更好的开发人员的过程中 我试图了解需要什么以及如何完成为 Ionic Framework 应用程序创建注册 登录 大多数单页应用程序 SPA 在节点服务器上处理身份验证 该服务器还为客户端提供 HTML 就
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • Spring Boot,Websockets无法从Session获取用户(即java.security.Principal)

    与 一起工作Spring Boot 1 2 1 RELEASE and Spring Websockets 运行嵌入式时存在部署运行时问题Jetty 9 我不能伪造用户 java security Principal 当应用程序部署在本地主
  • JSF 2.0 Facelets 模板继承

    这是一个扩展的转发JSF 2 0 Facelets 嵌套模板继承 https stackoverflow com questions 5323937 jsf 2 0 facelets nested templates inheritance
  • NestJS e2e 测试模拟会话装饰器

    我正在尝试使用 supertest 编写一个 e2e 测试 其中我的控制器实际上使用了 Session 装饰师 然而 我不想承担使用数据库连接等启动会话的全部负担 因此测试中的我的应用程序实际上并未初始化会话 相反 我想首先模拟掉装饰器提供
  • 如果用户在 Laravel 中经过身份验证,如何检查 Vue 组件?

    正如标题所述 我有点困惑如何根据用户是否登录并使用 Laravel 的 Auth 外观进行身份验证 使用 if else 语句处理 Vue 组件中的方法 我正在发出各种 Axios 请求 我需要根据用户是否登录来允许 禁止这些请求 我有 V
  • Primefaces 对话框渲染两次

    我创建了一个 ui component 来像弹出窗口一样使用 因此我可以使用此模板的标准创建很多弹出窗口 该组件只是一个带有两个按钮 取消和提交 的弹出窗口和一个可以覆盖的内容 如下所示
  • 在应用程序服务器上存储 PDF 一段有限的时间并可供下载

    您好 我正在使用 PrimeFaces 5 JSF 2 和 tomcat 有人可以向我展示或给我一个关于如何在应用程序服务器上在有限时间内存储 pdf 的想法吗 我正在使用 tomcat 然后下载它 如果这是用户请求的 此功能与发票相关 因
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • SSO:SP 是否应该在每个请求中验证与 IDP 的会话

    根据 SP 发起的 SSO 流程 用户尝试访问 SP 由于用户未经身份验证 因此他会被重定向到 IDP 在其中输入凭据 成功登录后 IDP 在用户的浏览器中设置 cookie 在 IDP 的域下 并使用 SAML 响应将用户重定向回 SP
  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • Python:创建登录系统[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 python 创建一个登录
  • 如何在 Shiny 应用程序中访问/打印/跟踪当前选项卡选择?

    我正在一个闪亮的应用程序中工作 我希望能够访问用户在会话中当前所在选项卡上的信息 我有一个观察事件 用于侦听要单击的特定按钮 简而言之 我想存储 打印用户单击此按钮时所在的当前选项卡 单击此按钮后 选项卡将更改为带有 updateTabIt
  • 从 Facebook Account Kit 获取电话号码

    Account Kit 文档指出 如果您使用 AccountKitActivity ResponseType TOKEN 开始登录会话 则可以通过调用 getCurrentAccount 来访问当前帐户的 Account Kit ID 电话
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • JSF 身份验证:无法拦截错误消息

    我开发了一个简单的登录表单 用于我的 JSF PrimeFaces 页面
  • HTTP 基本身份验证 + 访问令牌?

    我正在开发一个 REST API 计划将其与 Web 和 IOS 应用程序一起使用 我打算让这个 API 在一段时间内保持私有 私有意味着我只希望我的 Web 应用程序和 ios 应用程序访问该 API 我已经阅读了许多不同的身份验证方法

随机推荐

  • vfork() 调用后退出和返回之间的区别

    我有一个具有未定义行为的程序 vfork 使用不当 include
  • Python:从循环中返回值而不中断

    你好 我有一份按地点分组的个人名单 我想生成一个新变量 根据每个人的位置为每个人提供一个数字 我希望我的数据看起来像这样 place individual here 1 here 2 here 3 there 1 there 2 somew
  • 在构造函数中委托给另一个构造函数(使用 this())是好是坏

    Oracle 参考资料并未讲述最佳实践this当我们重载构造函数时使用关键字 谁能建议它的最佳实践 选项 1 委托给另一个构造函数 public class A private int x y z p public A this 1 1 1
  • 将参数从 php 传递到 casperjs/phantomjs

    编辑 我回答了我自己的问题 请参阅下面的编辑 原来的 我的网络服务器上安装了 phantomjs 和 casperjs 它们都运行良好 我计划创建的脚本依赖于我网站上的用户输入 然后将其传递给 casperjs 脚本 经过一番摆弄后 我注意
  • 在 PHP PDO MYSQL 中插入多行的最佳方法是什么?

    假设我们要在表中插入多行 rows 1 2 3 4 5 6 7 8 9 array of values 使用 PDO sql insert into table name col1 col2 col3 values 现在 您应该如何继续插入
  • 在reactjs中使用具有相同路由路径的条件组件

    假设我有 2 个组件称为
  • pyodbc 没有更新表

    基本上我正在尝试更新 Table1 中的 Column1 mbgl 字段数据 所有数据均基于 MS Access 数据库 脚本执行时没有任何错误 但检查表时没有发生更新 我尝试了代码中所示的两个选项 但没有成功 第二个选项是直接从 MS A
  • 仅对 pandas 数据帧给定列中的某些行求和

    我可以对 5 列 pandas 数据框中的前 310 行求和 并通过使用以下方法获得整洁的摘要 df 0 310 sum 有没有一种简单的方法可以将前 310 行求和某栏目我的选择 我只是不知道如何在表达式中组合列选择和行切片选择 最好通过
  • 更改 Android 启动器图标,如 Instagram/Todoist

    在 Instagram 周年纪念日 用户可以更改应用程序图标 即使此功能不再可用 Todoist 也有此功能的类似工作实现 我研究了如何实现这一目标并运行了第二个答案 更改应用程序图标 但这个解决方案似乎有我不想要的缺点 其中一些列在注释下
  • 无法使用 Gmail SMTP 设置在 Joomla 中发送电子邮件。出现 SMTP 服务器错误:5.5.1 需要身份验证。如何解决这个问题?

    我的 joomla 联系表单 gmail SMTP 设置不起作用 请参阅下面提交联系表单时显示的消息 应该是什么原因呢 Extension php openssl dll 也启用了 错误信息 SMTP 服务器错误 5 5 1 需要身份验证
  • Sybase ASE 15 字符串聚合函数

    我正在寻找一种方法将来自不同行的字符串聚合到 sybase ASE 15 中的一行中 如下所示 id Name Result id Names 1 Matt 1 Matt Rocks 1 Rocks 2 Stylus 2 Stylus 类似
  • 我对 JavaScript 中的关键字“this”感到困惑

    这是一个例子 function one var a 1 two function two var b 2 three function three var c 3 alert a b c 6 one calling the function
  • ggplot2 中的自定义轴刻度标签

    我想展示一个简短的时间序列 显示 22 年来欧洲海洛因缉获量的异质性 然而 某些年份包含不同数量的国家 我想通过在 x 轴上放置每年的 n xx 来在图表中显示这一点 有谁知道我应该怎么做 across time lt ggplot by
  • Dropwizard集成测试找不到资源文件

    对于 dropwizard 来说非常陌生 我正在尝试 完全 创建一个集成测试 以他们为例 https dropwizard github io dropwizard manual testing html public class Logi
  • C# 中的泛型类型推断如何工作?

    如果我有以下代码 private BaseMessage getMessage return new OtherMessage private void CheckType
  • Hangfire VB 启动抛出 SQL 异常

    See 这个 StackOverflow 问题一些背景 Hangfire 看起来对我来说是正确的解决方案 但我在让它发挥作用时遇到了困难 我的开发环境是VB 2010和SQL 2005 不是最新的工具 Public Sub Configur
  • 比较c中字节数组中的任意位序列

    我的 c 代码中有几个 uint8 t 数组 我想将一个数组中的任意序列位与另一个数组进行比较 例如 我有 bitarray 1 和 bitarray 2 我想将 bitarray 1 的位 13 47 与 bitarray 2 的位 5
  • 嵌套 SQL 查询是原子的吗?

    我有一些微服务 几乎 系统 其中每个程序都有自己的端口 此外 并非系统中的所有端口都可用 为简单起见 我决定在 PostgreSQL 的表中保留空闲端口列表 因此 我有这张表 service port sm srv 5600 null 56
  • 在 Swift 中将整数转换为罗马数字字符串

    我正在寻找一个Integer在 Swift 中并将其转换为罗马数字String 有任何想法吗 人们可以写一个扩展Int 与下面看到的类似 请注意 对于小于 1 的数字 此代码将返回 虽然这对于罗马数字来说可能没问题 零不存在 但您可能希望在
  • 使特定用户的会话无效

    因此 对于我的网络应用程序 如果我删除当前登录的用户 并且我想使他 她的会话无效 这样 一旦他 她刷新页面或导航 他们就不再登录 我现在的方式是 如果用户成功登录 我会将用户对象存储在我的SessionScoped豆 并存储HttpSess