Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在spring security中切换角色_Spring_Authentication_Spring Boot_Spring Security_User Roles - Fatal编程技术网

如何在spring security中切换角色

如何在spring security中切换角色,spring,authentication,spring-boot,spring-security,user-roles,Spring,Authentication,Spring Boot,Spring Security,User Roles,我为如何通过SpringSecurity在SpringBoot应用程序中使用一个用户帐户实现角色之间的切换而苦苦挣扎了好几天。 我的例子如下: 我有一个类[UserAccount]{Id,username,password,isActive}和[Role]{Id,roleName,description},用它我用一些@Secured RESTful方法实现了一个成功的简单登录系统。 我的角色是:管理员、教师和学生 现在,我想为每个角色(例如StudentUser、TeacherUser、Adm

我为如何通过SpringSecurity在SpringBoot应用程序中使用一个用户帐户实现角色之间的切换而苦苦挣扎了好几天。 我的例子如下:

我有一个类[UserAccount]{Id,username,password,isActive}[Role]{Id,roleName,description},用它我用一些@Secured RESTful方法实现了一个成功的简单登录系统。
我的角色是:管理员、教师和学生

现在,我想为每个角色(例如StudentUser、TeacherUser、AdminUser)或类似的角色创建一个类,以便能够添加一些并非所有用户都通用的新属性。
例如:
  • 学生用户将与成绩、课程、考试等相关。
  • 教师用户将与部门、课程、研究团队等相关。
  • 或者在某些情况下,具有多个角色(教师和学生)的用户(如博士生)希望在其前端空间(不同视图)之间切换


    我如何才能以最佳和高效的方式处理这些问题?谢谢。

    问题是您希望将几个实体绑定在一起—帐户、个人、角色。我建议你这样分开它们:

    • 人员-仅包括姓名等基本数据
    • 一个人可以有一个帐户。没有帐户的人无法登录
    • 学生/教师/管理员具有/是个人-学生/教师/管理员包含每个角色的特定信息。在设计这种关系时,有必要弄清楚一个人是否可以拥有更多相同类型的学生/教师/管理员档案(如果一个人有多个研究怎么办)。如果将其设计为一对一关系,则可以在Java中将其建模为继承(学生/教师/管理员是个人)
    在Spring Security中,根据帐户人员的(活动)学生/教师/管理员关系分配
    授权
    -s(角色)

    在frontent中,您将看到登录人员具有哪些角色,并且您可以允许他们在基于角色的视图之间切换

    更新

    为了澄清,类图可能是这样的:


    您不需要为角色设置单独的类/表,因为角色是由给定人员的学生/教师/管理员对象的存在决定的。但是如果您出于某种原因需要它,您可以将其添加到那里-可能帐户将有1..n个角色。

    谢谢大家,我通过以下方法解决了这个问题:从配置文件继承每个角色都有自己的配置文件类,因此用户将有多个配置文件。

    我不理解您的设计,每个班级的角色会有关联吗?我更新了答案,希望现在能更容易理解。