Java 针对客户和员工的Spring Security用户身份验证
我是春天安全的新手。我有一个Spring启动应用程序,它有两种不同类型的实体。客户和员工。在雇员中,我有普通雇员、管理员和超级用户。由于我使用JPA,每个实体都有自己的Java 针对客户和员工的Spring Security用户身份验证,java,spring,jakarta-ee,spring-security,spring-security-rest,Java,Spring,Jakarta Ee,Spring Security,Spring Security Rest,我是春天安全的新手。我有一个Spring启动应用程序,它有两种不同类型的实体。客户和员工。在雇员中,我有普通雇员、管理员和超级用户。由于我使用JPA,每个实体都有自己的存储库。如何使用loadUserByUsername对myUserDetailsService建模,因为这是针对许多存储库进行验证的常用方法。在我的实体周围,我缺少什么可以建模的东西吗 其他信息: 在我的设计中,我有两个实体客户和员工员工将扮演普通、管理员和超级用户等角色。客户是一个不同的实体 是否有两个UserDetailsSe
存储库
。如何使用loadUserByUsername
对myUserDetailsService
建模,因为这是针对许多存储库进行验证的常用方法。在我的实体周围,我缺少什么可以建模的东西吗
其他信息:
在我的设计中,我有两个实体<代码>客户和员工<代码>员工将扮演普通
、管理员
和超级用户
等角色。客户是一个不同的实体
是否有两个UserDetailsService
和两个AuthenticationProvider分别指向自己的表(客户和员工)?“是否有两个UserDetailsService和两个AuthenticationProvider分别指向自己的表(客户和员工)?”。。。。。答案是肯定的
Spring security具有筛选器UsernamePasswordAuthenticationFilter(检查筛选器的名称),您可以在其中根据输入类型实现特定的实现
我做了同样的事情,但不同的身份验证机制。
但根据您的要求,您可能需要什么。因为您的要求是拥有多个身份验证入口点,所以它不像Atul的答案那么简单 您需要的是
UsernamePasswordAuthenticationFilter
而不是spring security提供的默认.formLogin()
UsernamePasswordAuthenticationToken
作为EmployeeUsernamePasswordAuthenticationToken
和CustomerNamePasswordAuthenticationToken
AuthenticationProvider
为EmployeeCustomAuthenticationProvider
和CustomerCustomAuthenticationProvider
其中每个AuthenticationProvider
都应被覆盖,并支持AuthenticationProvider支持特定令牌customerAuthToken或employeeAuthToken的方法你也可以你的问题很窄,但你的问题中缺少更大的要求。在提出问题之前,我建议你们收集需求。让我帮你问个问题。您有不同的用户集吗?客户作为不同的实体,员工作为不同的实体。员工可以担任
员工
、管理员
和超级用户
。如果将employee、admin和superuser表分开,这将是一个糟糕的设计。我建议您为员工、管理员和超级用户设置一个实体/表。您可以为客户设置单独的实体/表。您是否为客户和员工提供了单独的登录界面。我认为您需要为员工和客户提供单独的登录页面/表单。“我说的对吗?”Praveenkumarlasangi在问题中补充了细节