有没有办法从数据库中注销特定用户或所有用户?

is there a way to logout a specific user or all users from database?

我正在使用具有 spring 安全性的 grails 2.2。我正在使用 MYSql 作为数据库。我想知道是否有一种方法可以通过清除 mysql 数据库中的数据来注销一个用户或所有用户。

如果删除数据库中的数据,用户将无法在下次登录。

如果任何当前会话打开,用户将保持 logged-in,并且 Spring 安全性中没有 out-of-box 机制来结束特定用户的会话。

如果安装 JavaMelody(有时作为 grails 插件提供),您应该能够看到所有活动会话,并且可以从界面中删除它们(这会导致所有用户注销) .

I am wondering whether there is a way to logout a user or all users by clearing data in mysql database.

没有。表示用户是否登录的状态一般在数据库中是不存在的。在一个简单的系统中,信息将存在于网络应用程序的内存中。在更复杂的系统中,信息可能存在于与应用程序通信的单独服务中。该信息通常不会存储在数据库中。

请注意,在数据库中存储用户名、密码和角色等凭据与跟踪谁登录是两回事。

希望对您有所帮助。

你不能完全按照你的要求去做,因为数据没有存储在你的应用程序数据库中,正如 JSB 所说。

但是,您可以从您的网络应用程序检查会话并使其中一些会话无效,这将 "logout" 关联用户。我基于旧的“app-info" plugin and the "scopesInfoService". See the source and the blog.

写了一个服务和控制器

如果您需要快速修复并部署到 Tomcat,请尝试使用管理器 webapp 使您的 webapp 的会话无效,但如果您还没有明确选择哪些会话可能会很棘手在身份验证成功后将用户名(或其他标识字符串)添加到会话 'Login' 属性。