Spring Security 中 Role 和 GrantedAuthority 之间的区别?

Spring Security 中有一些概念和实现,例如获取 authority 以授权/控制访问的接口
GrantedAuthority

我希望将其转化为可行的操作,比如 createSubUsersdeleteAccounts ,我想要允许 admin(具有 ROLE_ADMIN 角色)进行这些操作。

我在网上看了一些教程和示例,但越看越混乱。

我看到 hasRole 参数是一个字符串(String)?在 Spring Security 中 hasRoleGrantedAuthority 这些概念到底是什么?

如何将用户的角色与该角色的权限分开存储?

我还看了 AuthenticationProvider 引用的 DAO 中使用的接口,该接口需要一个:org.springframework.security.core.userdetails.UserDetails User(注意最后的GrantedAuthority 参数)

public User(String username, 
            String password, 
            boolean enabled, 
            boolean accountNonExpired,
            boolean credentialsNonExpired, 
            boolean accountNonLocked, 
            Collection<? extends GrantedAuthority> authorities)

还有其他区分这两者的方法吗?或者它们没有支持,必须自己创建?