当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Security中使用外部调用注销用户

谈渊
2023-03-14

我有一个实现了Spring Security性的Spring Boot应用程序。用户日志和注销成功工作,我正在使用jdbc来会话存储。现在,我只想实现一个新的restendpoint,它接受特定用户的用户名作为参数,并注销该用户。目前,我使用follwing类作为注销植入。

@Component
public class CustomLogoutHandler extends SecurityContextLogoutHandler {

    @Override
    public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
        super.logout(request, response, authentication);
    }

}
    #Spring Session
spring.session.store-type=jdbc
spring.session.jdbc.table-name= SESSION_TABLE

可以从表中手动删除表项,并注销用户。但是我想通过遵循Spring Security的适当流程来注销。

谢谢

共有1个答案

欧阳嘉
2023-03-14

我认为您可以使用spring session注销特定的用户,只需自动调用控制器中的会话存储库即可。如果我很清楚,您已经配置了一个JdbcOperationsSessionRepository,所以您可以这样做:

@Autowired
private org.springframework.session.jdbc.JdbcOperationsSessionRepository sessionRepository;

然后使用存储库查找与特定用户相关的会话

sessionRepository.findByIndexNameAndIndexValue(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME, somePrincipalName);
 类似资料:
  • 我正在学习springsecurity(基于java的配置),我无法使注销正常工作。当我点击注销时,我看到URL更改为http://localhost:8080/logout并获取“HTTP 404-/logout”。登录功能工作正常(即使使用自定义登录表单),但问题是注销,我怀疑重定向的url“localhost:8080/logout”应该类似于“localhost:8808/springte

  • 问题内容: 我正在尝试使用jquery在Facebook墙上发表评论。 但是我的ajax调用不会降低外部url。 谁能解释我们如何在jquery中使用外部网址? 下面是我的代码: 它给xmlhtttprequest错误。 问题答案: 所有这些答案都是错误的! 就像我在评论中说的那样,由于URL未能通过“ 相同来源策略 ”而导致出现此错误的原因,但是您仍然可以使用AJAX函数访问另一个域,请参见Ni

  • 问题内容: 在某些条件下,在我的Django应用中,我希望能够强制用户使用用户名注销。不一定是当前登录的用户,而是另一个用户。因此,我认为request方法没有关于我要注销的用户的任何会话信息。 我熟悉django.auth和auth。注销方法,但是它将请求作为参数。如果我只有用户名,是否存在“ Django方式”将用户注销?还是我必须推出自己的注销SQL? 问题答案: 我认为Django中尚无认

  • 问题内容: 答案可能很简单:如何在Spring Security中手动注销当前登录的用户: ? 问题答案: 在Servlet 3.0容器中,Spring注销功能与Servlet集成在一起,你只需在上调用。仍然需要编写有效的响应内容。 根据文档(Spring 3.2): HttpServletRequest.logout()方法可用于注销当前用户。 通常,这意味着将清除SecurityContext

  • 我目前正在使用2个项目。1个前端(使用laravel后端与API通信)和另一个laravel项目(API)。 现在,我使用LaravelPassport对用户进行身份验证,并确保每个API调用都是经过授权的调用。 现在,当我想注销我的用户时,我会向我的API发送一个post请求(使用承载令牌),并尝试将他注销API(并清除会话、cookies等) 然后在客户端上,我也刷新我的会话,这样令牌就不再是

  • 问题内容: 我正在尝试组织我的代码,并将重复性函数移至单个类。这行代码在扩展活动的类中可以正常工作: 但是,当我尝试将其包含在外部类中时,它不起作用。 如何从另一个类调用getWindow()以将其应用到Activity中? 问题答案: 在创建类以及调用相关方法并使用它时,传递活动的引用。