我的 Spring-Boot 应用程序中有一个 jdbc-authentication 和一个 oauth2-authorization。 这是我的 jdbc-authentication 代码:
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username, password, 1 from users where username = ?")
.authoritiesByUsernameQuery(
"select u.username, r.name from users u, roles r, role_users ru "
+ "where u.username = ? and u.id = ru.users_id and ru.roles_id = r.id ");
我的授权配置如下所示:
http.
anonymous().disable()
.requestMatchers().antMatchers("/api/v1/users/**")
.and().authorizeRequests()
.antMatchers("/api/v1/users/**").access("hasRole('ADMIN')")
.and().exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler());
现在,当我在数据库中对用户进行身份验证时,一切正常。我向具有 "ADMIN" 角色的用户进行身份验证,因此我认为它应该允许我访问 /api/v1/users/**
资源。
但我得到的只是一个access_denied
错误。我究竟做错了什么?如果您需要查看更多代码片段,请告诉我。感谢您的帮助。
最佳答案
不是大专家,但我从未使用过方法access(...)
你试过 hasRole 了吗?
有点像
.antMatchers("/api/v1/users/**").hasRole("ADMIN")
关于java - 对任何用户的 jdbc 身份验证拒绝访问 [OAUTH2],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045875/