gpt4 book ai didi

spring-mvc - 如何在Spring中使用SwitchUserFilter模拟用户?

转载 作者:行者123 更新时间:2023-12-02 20:16:58 50 4
gpt4 key购买 nike

我不了解 Spring 模拟用户。

我已经浏览了一些用于模拟用户的配置示例代码,并注意到 SwitchUserFilter 用于此实现。

如何使用 Spring SwitchUserFilter Filter 实现模拟用户以及它是如何工作的?冒充用户的内部流程是怎样的?

在我的应用程序中,我也使用 spring security。

任何人都可以帮我提供简单的描述或任何示例来实现此目的吗?

最佳答案

您首先需要创建一个 SwitchUserFilter 实例,如下所示:

@Bean
public SwitchUserFilter switchUserFilter() {
SwitchUserFilter filter = new SwitchUserFilter();
filter.setUserDetailsService(userDetailsService);
filter.setSuccessHandler(authenticationSuccessHandler);
filter.setFailureHandler(authenticationFailureHandler());
return filter;
}

然后,您可以这样添加过滤器:

@Override
protected void configure(HttpSecurity http) throws Exception {

http
...
.addFilterAfter(switchUserFilter(), FilterSecurityInterceptor.class);

现在,要切换,您可以使用

POST /login/impersonate?username=loginIdOfTheNewUser

并切换回来

POST /logout/impersonate

请注意,您的工作是确保现有用户必须拥有足够的切换权限。常见的做法是将 /login/impersonate 仅限制为管理员,并将 /logout/impersonate 限制为经过身份验证的用户,如下所示:

        .authorizeRequests()
.antMatchers("/login/impersonate*").hasRole("ADMIN")
.antMatchers("/logout/impersonate*").authenticated()
.antMatchers("/**").permitAll();

参见this获取完整示例。

关于spring-mvc - 如何在Spring中使用SwitchUserFilter模拟用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31377125/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com