我希望使用Spring Security(使用MySql)存储用户、角色、权限(权限)。我做了以下工作:
ApplicationUser(id,firstName,lastName,username,password,roles)
ApplicationRole(id,name,description,permissions)实现GrantedAuthority
ApplicationPermission(id,name,description)实现GrantedAuthority
我创建了一个实现UserDetailService的类。在loadUserByUsername方法中,我执行以下操作:
ApplicationUser applicationUser = userRepository.findByUsername(username);
if(applicationUser == null) {
throw new UsernameNotFoundException(username);
}
// Extract role/role permission grantedAuthorities from db user
List<GrantedAuthority> grantedAuthorities = new ArrayList<>();
for (Role role: applicationUser.getRoles()) {
grantedAuthorities.add(role);
grantedAuthorities.addAll(role.getPermissions());
}
return new User(applicationUser.getUsername(), applicationUser.getPassword(), grantedAuthorities);
然而,这仍然让我有点困惑,这里是我的几个问题。
我认为我的问题是,我不知道何时/如何正确实现UserDetailService和UserDetailService以确保我从数据库加载权限,并在每次用户登录时设置这些权限。另外,用我的ApplicationRole和ApplicationPermission类实现GrantedAuthority有什么意义吗?
>
没有必要,我也不推荐。将应用程序的这些不同方面分开是很好的。据我所知,在自定义UserDetailsService
中获取角色并将其文本表示形式包装在SimpleGrantedAuthority
(即它们的名称)中是一种常见的做法。请注意,要在Spring Security中区分角色和权限,您必须在默认情况下为角色加上role_
标记(请参见HasRole
和HasAuthority
访问控制表达式)。
拥有自定义的userdetails
实现并不是必需的,但可能有好处,例如,您可以存储特定于应用程序的额外字段。默认实现是org.springframework.security.core.userdetails.user
,大多数时候您可以扩展这个实现。
参见#1
用我的ApplicationRole和ApplicationPermission类实现GrantedAuthority有什么意义吗?
不会有任何意义的,不。现有的实现涵盖了许多用例,但对于最简单的用例,您可以只使用simplegrantedauthority
。
Defining and using roles(定义和使用 角色) 静态角色 动态角色 Loopback 允许使用定义 静态 和 动态角色 区别: 静态角色被存储在一个数据源中,同时映射到用户上 没有确定在哪里赋予用户角色 Static roles 下面代码段,展示如何 定义一个新的静态角色 并 分配用户给该角色 // 创建用户 User.create([ {username: 'Joh
我已经基于命名的路由为Laravel(4.2)创建了自定义角色管理器,例如: 基本上,任何注册为
我是新来的。我有一个问题。我有3个子组织(org A、B和C),每个组织都有每个单独的用户。例如UA1、UB2、UC3。 现在我想定制文档和媒体portlet的权限,以便UA1可以上传/下载他的文档。但组织A中的另一个用户(例如UA4)无法访问UA1的文档。同时,用户UB2和UC3可以查看用户UA1的文档或为其添加新文档。 我可以通过创建角色和权限来实现这一点吗?我尝试了许多组合,但都不起作用。
我试图在一个带有spring security和KeyClope的java应用程序中同时使用领域和资源角色。不幸的是,KeyClope只会返回一个或另一个,具体取决于: 您仍然可以通过自定义代码获得这两种方法,但它会弄乱@PreAuthorize或spring boot方法等注释。isUserInRole,这会导致难看的代码。 有没有办法覆盖@PreAuthorize方法或JSON令牌Keyclo
本文向大家介绍Springboot+SpringSecurity+JWT实现用户登录和权限认证示例,包括了Springboot+SpringSecurity+JWT实现用户登录和权限认证示例的使用技巧和注意事项,需要的朋友参考一下 如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于
问题内容: 在将旧版应用程序迁移到Spring Security时,出现以下异常: 在旧的应用程序中,角色有“超级管理员”,“编辑者”,“帮助台”等。但是在所有Spring Security示例中,我仅看到诸如“ ROLE _”(“ ROLE_ADMIN”等)的角色。当我将“ superadmin”重命名为“ ROLE_ADMIN”并且仅在配置中使用此角色时,一切正常。 不起作用: 作品: 可以使