我尝试在我的应用程序中扮演角色。但我一直有个消息。
"status": 403,
"error": "Forbidden",
"message": "Forbidden",
在数据库中,我有列角色和值USER或ADMIN
重新控制器
@GetMapping(value="/users")
@PreAuthorize("hasRole('ROLE ADMIN')")
public ResponseEntity<List<User>> getAllusers(){
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
System.out.println(authentication.getAuthorities());
List<User> users = userService.findAll();
return new ResponseEntity<List<User>>(users, HttpStatus.OK);
}
如果我评论@PreAuthorize
系统。出来println(authentication.getAuthorities())
正确显示
“角色管理员”
或“角色用户”
问题是您以错误的方式创建了权限,在您的情况下,权限应该用ROLE_
作为DB角色的前缀,它将是ROLE_ADMIN
和ROLE_USER
(您错过了下划线)
所以,您的UserDetails
的getAuthorities()
实现应该以适当的方式填补这个角色,比如:
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
List<SimpleGrantedAuthority> authorities = new ArrayList<SimpleGrantedAuthority>();
/* this is just a sample , you must implement bringing data from repository then prefix every string with ROLE_ */
authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
return authorities;
}
然后在控制器中,@PreAuthorize(“hasRole('ADMIN')”)
应该可以工作(删除角色
),也可以使用hasAuthority('ROLE_ADMIN'),
我在使用Spring Security&Thymeleaf时遇到了一个问题,特别是在尝试使用hasRole表达式时。admin“用户有一个角色”admin“,但在尝试时解析为false 我得HTML: 结果如下: 我已经在security.xml文件中启用了use-expressions 并且在我的配置中包含了SpringSecurityDiscuale 而具有一组 为什么不起作用? 我很感激你的
尝试在调用以下命令时保护spring Actuctor服务/管理上下文路径: http://localhost:9091/manage/metrics 在yalm.properties中使用此配置 。 带有安全执行器服务层Git分支 Spring Security配置: '@override protected void configure(HttpSecurity http)引发异常{
有的安全措施起作用,有的不起作用。 如果我的html文件中包含以下内容: 结果是: (->但它不起作用,因为每个人都可以一直看到它) (->按预期工作) (->有效) (->正确) 正如你所看到的,其他人根本没有出现。 html标记如下所示: 我的pom.xml具有以下依赖关系: 我的SecurityConfig如下所示: 所以基本上只要和角色没有任何关系,一切都是正常的。如果它是基于角色的,那么
null 获取http://localhost:8888/image-service/default: 获取http://localhost:8888/image-service/prod 我在REST应用程序中激活了配置文件,但始终显示默认配置文件中的值。
在过去的几天里,我一直在进行故障排除,我似乎无法让表达式hasRole工作。我使用的是sping-Security 4.0.1 我的Spring Securityxml 我的所有角色都存储在数据库中,其模式类似于此链接中的1。在自定义的userDetailService中,我将从数据库中加载它。我的角色价值观是这样的 我甚至试着加上前缀“ROLE\uux”,但我似乎无法实现。 下面是关于如何使用h
我的spring security xml 我的所有角色都存储在数据库中,并且有一个类似于此链接中的1的模式。在我的自定义中,我将从数据库加载它。我的角色价值观是这样的 我甚至尝试过把前缀“role_”,但我似乎不能让它工作。