当已经有另一个用户登录时,我尝试登录一个新用户。它可以正常工作-无需注销第一个用户。他的授权被新的授权所代替。这是对我自己问题的简单答案。
如果有人感兴趣,在访问被拒绝的情况下如何转发登录页面-这是我的解决方案:
首先定义一个自定义的RequestCache:
@Component("myRequestCache")public class MyRequestCache extends HttpSessionRequestCache { public MyRequestCache() { super(); }}第二个定义自定义AccessDeniedHandler:
@Component("myAccessDeniedHandler")public class MyAccessDeniedHandler implements AccessDeniedHandler { @Autowired @Qualifier("myRequestCache") private RequestCache myRequestCache; public MyAccessDeniedHandler() { } @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException exc) throws IOException, ServletException { if (!response.isCommitted()) { //Save Target-Request shopRequestCache.saveRequest(request, response); //Forward to the login page request.getRequestDispatcher("/loginPage").forward(request, response); } } }第三,将这两个配置为Spring Security:
@Configuration@EnableWebSecuritypublic class myConfig extends WebSecurityConfigurerAdapter { @Autowired @Qualifier("myRequestCache") RequestCache myRequestCache; @Autowired @Qualifier("myAccessDeniedHandler") AccessDeniedHandler myAccessDeniedHandler; @Override protected void configure(HttpSecurity http) throws Exception { http .requestCache() .requestCache(myRequestCache) .and() .exceptionHandling() .accessDeniedHandler(myAccessDeniedHandler) }}这是怎么回事
如果是,则
MyAccessDeniedHandler转发
AccessDeniedException到登录页面。由于此前进是由此自编程类而非过滤链中的Spring调用的,因此我们必须告诉spring目标请求是什么-
成功身份验证后目标重定向到的位置。这是通过
RequestCache。



