首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能用userDetailsService授权

不能用userDetailsService授权
EN

Stack Overflow用户
提问于 2019-04-01 07:18:37
回答 1查看 126关注 0票数 0

我正在学习Security,这是我的配置类,非常简单:

代码语言:javascript
复制
@Configuration
@EnableWebSecurity
public class Config extends WebSecurityConfigurerAdapter {

    @Autowired
    MyUserDetailsService myUserDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

        auth.userDetailsService(myUserDetailsService);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeRequests()
                .antMatchers("/")
                  .permitAll()
                .antMatchers("/users")
                  .hasRole("isAdmin")
                .antMatchers("/articles")
                  .hasRole("isUser")
                .and()
                .formLogin()
                  .permitAll();
    }
}
代码语言:javascript
复制
import org.springframework.security.core.userdetails.User;
@Service
public class MyUserDetailsService implements UserDetailsService  {

    @Autowired
    UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username)
            throws UsernameNotFoundException {

        List<SimpleGrantedAuthority> simpleGrantedAuthorities = new ArrayList<>();
        simpleGrantedAuthorities.add(new SimpleGrantedAuthority("isUser"));
        return new User(username, "{noop}123456", simpleGrantedAuthorities);

    }
}

根据此配置,我允许任何人使用任何用户名和特定密码123456登录,并为每个用户提供isUser角色。

我希望任何人都可以用任何用户名登录并获得访问/articles的许可。

但不幸的是,当我尝试登录时,是的,登录是成功的,但是访问/articles失败了。

我找不到原因,我想已经给用户许可了,怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-01 08:54:45

答案可以在hasRole方法(链接)的javadoc中找到:

指定URL的快捷方式需要一个特定的角色。如果不希望自动插入"ROLE_“,请参阅hasAuthority(字符串)。 参数:角色-需要的角色(即用户、管理员等)。注意,它不应该以"ROLE_“开头,因为这是自动插入的。

因此,要么将ROLE_前缀添加到角色isUser中,要么使用hasAuthority方法而不是hasRole

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55449838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档