在这个应用程序中,我不想要任何Spring认证,因为身份验证是由SSO服务完成的,SSO向我发送userId和角色
现在,我想使用发送的角色进行授权。设置角色的代码在UserDetailsService
的实现中我遇到的问题是,如果我将formLogin添加到安全配置中,则只会调用UserDetailsService。当然,我根本不想要formLogin,因为我不想要身份验证。那么如何在不调用formLogin的情况下进行授权?
@Override
protected void configure(HttpSecurity http) throws Exception{
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
encodingFilter.setForceEncoding(true);
http
.addFilterBefore(encodingFilter,CsrfFilter.class)
.addFilterAfter(new MdcFilter(), SwitchUserFilter.class)
.addFilterAfter(new ParameterSanitizerFilter(), MdcFilter.class)
.authorizeRequests()
.antMatchers("/**").hasAnyRole(StringConstants.USER_ROLE, StringConstants.MANAGER_ROLE);
//.formLogin();
}
****编辑 感谢您的帮助,pczeus'链接似乎是同一个问题。但仍然在苦苦挣扎! 我在RequestMapping路径“/”上设置了一个控制器,但它没有被触发(控制器的目的是从会话中获取角色并将其设置在新的UserAuthenticationInfoService中 - 根据pczeus链接)
所以我需要控制器在这一行之前执行:
.antMatchers("/**").hasAnyRole(StringConstants.USER_ROLE, StringConstants.MANAGER_ROLE);
我该怎么办?