Java 我如何设计我的Spring程序,以便当用户登录时,我可以判断他们是职员、学生还是教员?

Java 我如何设计我的Spring程序,以便当用户登录时,我可以判断他们是职员、学生还是教员?,java,authentication,spring-security,database-design,authorization,Java,Authentication,Spring Security,Database Design,Authorization,再详细一点。就像我说的,我正在构建这个大学管理系统,它将具有用户身份验证。它还将为web层的某些部分提供用户授权,例如,只有学生才能访问学生web门户以添加/删除课程,只有教员才能使用教员门户为学生评分并查看他们的课程列表 问题是:当有人登录时(这都是使用Spring Security和Spring MVC顺便说一句),我需要能够从登录信息本身判断这是否是学生、教员或员工。查询每个表直到找到匹配项似乎是个糟糕的设计。每个实体都继承自一个公共抽象类Person,但它们共享的接口非常基本,它们具有I

再详细一点。就像我说的,我正在构建这个大学管理系统,它将具有用户身份验证。它还将为web层的某些部分提供用户授权,例如,只有学生才能访问学生web门户以添加/删除课程,只有教员才能使用教员门户为学生评分并查看他们的课程列表


问题是:当有人登录时(这都是使用Spring Security和Spring MVC顺便说一句),我需要能够从登录信息本身判断这是否是学生、教员或员工。查询每个表直到找到匹配项似乎是个糟糕的设计。每个实体都继承自一个公共抽象类Person,但它们共享的接口非常基本,它们具有ID、名字、姓氏等的getter和setter。我可以将授权角色存储在抽象类中,这将告诉我这个Person实例是职员、学生还是教员,然后检查角色以确定我使用的是什么特定子类,但这似乎也是人为的。有没有一种直观和常识性的方法来解决这个问题?

我认为您可以在名为userType的实体类中创建一个enum字段,然后创建一个过滤器类,根据用户的userType确定对位于api层中的函数的访问。您可以通过从DB请求用户类型并在用户登录后将其存储在服务器上的数据结构(如HashMap)中来高效地获取该用户类型