如何在spring-security中切换角色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在spring-security中切换角色相关的知识,希望对你有一定的参考价值。
几天来我一直在苦苦思索如何通过Spring Security在Spring Boot应用程序中实现与一个userAccount的角色之间的切换。在我的案例中有一个例子:
我有一个类[UserAccount] {Id,username,password,isActive}和[Role] {Id,roleName,description},我正在用一些@Secured RESTful方法实现一个成功的简单登录系统。 我的角色是:管理员,老师和学生
现在,我想为每个角色(例如StudentUser,TeacherUser,AdminUser)或类似的东西创建一个类,以便能够添加一些在所有用户之间不常见的新属性。 例如:
问题是你想要将几个实体绑定在一起 - 帐户,人,角色。我建议你把它们分开:
- 人 - 只是名称等基本数据
- 人可以拥有一个帐户。没有帐户的人无法登录。
- 学生/教师/管理员拥有/是个人 - 学生/教师/管理员包含特定于每个角色的信息。在设计这种关系时,有必要弄清楚一个人是否可以拥有相同类型的更多学生/教师/管理员档案(如果一个人有多个学习,那该怎么办)。如果将其设计为一对一关系,则可以将其建模为Java中的继承(Student / Teacher / Admin是Person)。
在Spring Security中,根据帐户人员拥有的(活动)学生/教师/管理员关系分配GrantedAuthority
-s(角色)。
在您的前端,您将看到登录的人员具有哪些角色,您可以允许他们在基于角色的视图之间切换。
更新
为了澄清,这是类图的样子:
您不需要为角色分别创建一个类/表,因为角色由给定Person的Student / Teacher / Admin对象的存在决定。但是如果你出于某些原因需要它,你可以在那里添加它 - 可能Account会有1..n角色。
谢谢大家,我解决了这个问题:继承自Profile,每个角色都拥有自己的个人资料类,因此用户将拥有多个个人资料。
以上是关于如何在spring-security中切换角色的主要内容,如果未能解决你的问题,请参考以下文章
在tomcat中显示Spring-security的SQL错误
如何使用 Spring Security 获取当前用户的角色
Spring-Security自定义登录页&inMemoryAuthentication验证