gpt4 book ai didi

java - 根据权限从数据库中获取数据

转载 作者:行者123 更新时间:2023-12-01 16:15:29 25 4
gpt4 key购买 nike

我正在开发一个应用程序,需要在其中开发基于角色的访问控制。我尝试寻找其他答案,但这些提供了一些不同的解决方案。根据我们应用程序中的模块,角色是动态的,但权限是静态的。

这是我的场景。

我有员工和医生,员工与医生有联系。因此权限为“查看医生”、“编辑医生”、“查看预约”、“编辑预约”等。

员工既可以是全局用户,也可以是本地用户。因此,假设如果一名工作人员是全局用户,那么他拥有每个医生的权限。如果工作人员是本地用户,则他拥有特定医生的权限。

现在当工作人员去预约列表时,api应该根据他的权限返回数据,他应该只能看到那些给他“查看预约”权限的医生的预约列表

使用hasRolehasAuthority,我可以限制完整的API,但我需要根据权限从数据库获取数据。在 JPA 查询中对每个数据库命中的权限进行硬编码会太多。

所以我正在寻找一些关于架构或设计模式的建议和帮助。

最佳答案

你的问题确实很广泛,但我尝试回答......

对于这种情况,Spring Security 是您可以根据为用户定义的角色控制任何 API 访问的最佳方式

WebSecurityConfigurerAdapter

配置方法类来配置用户的特定角色并根据角色映射 URL 模式

记住 WebSecurityConfigurerAdapter 类具有三个版本的 configure 方法,但对于这种情况,您只需要其中的两个版本,一个用于映射用户,即 configure(AuthenticationManagerBuilder auth) 及其特定角色,以及用于将 url 模式与其特定角色映射的一个,即 configure(HttpSecurity http)

因此,通过将 url 与特定角色映射,您可以根据用户角色轻松控制 API 调用,因此 JPA 查询不需要角色的硬编码

我分享一个示例,说明如何根据角色映射 url

protected void configure(HttpSecurity http){
http.authorizeRequests()
.antMatchers("/")
.hasRole("Physician")
.and()
.formLogin()

注意您也可以使用任何其他方法登录

我希望这能帮助并激励您探索这个主题。

关于java - 根据权限从数据库中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62403246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com