如何禁用基于spring的身份验证,但保持基于角色的授权

时间:2016-04-02 00:18:51

标签: java spring spring-mvc spring-security

在这个应用程序中,我不想要任何Spring认证,因为身份验证是由SSO服务完成的,SSO向我发送userId和角色

现在,我想使用发送的角色进行授权。设置角色的代码在UserDetailsS​​ervice

的实现中

我遇到的问题是,如果我将formLogin添加到安全配置中,则只会调用UserDetailsS​​ervice。当然,我根本不想要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);

我该怎么办?

0 个答案:

没有答案