jwt - Spring Boot JWT 令牌对象智能获取
问题描述
我有三行的分区表,比如
分区 ID 名称
1 divA 2 divB 3 divC
和客户表一样
custId 名称 DivisionId
1 cust01 1
2 cust02 1
3 cust03 2
4 cust04 1
5 cust05 2
6 cust06 3
7 cust07 3
8 cust08 1
和用户表一样
userId unname 密码 roleId divisionId
1 john *** 1 1
2 ravi *** 2 1
3 bush *** 2 2
4 sam *** 2 3
5 jasd *** 1 2
6 jas *** 2 2
7 jioa *** 2 3
8 saho *** 2 1
9 vija *** 1 1
角色 ID 名称
1 ADMIN
2 USER
当用户尝试使用三个参数登录时,例如 { "division" : "divA", "uname" : "john", "password": "****" }
如果用户成功登录,我将生成 JWT Token,包括部门、角色等
@GetMapping("/listcustomers")
public List<Customers> getCustomers(){
return customerService.findAll();
}
在这种情况下,当用户尝试从客户表访问 /listcustomers api 时,他应该获取与登录用户的部门 ID 匹配的客户列表,并且仅客户分配部门的 divisonId,他不应该能够访问其他部门客户从任何地方,这就是我寻找前哨的方式,不,我得到了解决方案,请任何人帮助我,而且还有许多带有部门分配对象的 api,并且 ROLE 工作正常,但我是明智的没有得到,
我正在使用 spring boot 2.0.0.Relaease、Java 8、Hibernate、JWT Authentication spring security
解决方案
假设您创建了一个 jwt 令牌,您可以使用Principal从令牌中获取用户名。然后您定义findByUsername,它返回该用户的过滤客户。
import java.security.Principal;
@GetMapping("/listcustomers")
public List<Customers> getCustomers(Principal principal){
String currentUser = principal.getName()
return customerService.findByUsername(currentUser );
}
推荐阅读
- python - Python:尝试使用 requests.post 时获取“internalServerError:500”
- stripe-payments - 电子商务支付网关 - 资金从一个客户转移到另一个客户
- google-sheets - 如何在下拉列表中的项目来自列的 Google Data Studio 中添加过滤器
- python - 检查熊猫中的元组列是否包含列表中的某些值
- python - 如何将scrapy spider导入另一个代码
- python - 在 Python 中使用 lambda 更改最小化标量以最大化
- android - Android布局动画过渡
- c# - 从字符串中删除不需要的 Unicode 字符
- javascript - Lance Pong 示例在浏览器中不起作用:缺少“bundle.js”
- sse - 使用 AVX/AVX2/SSE __m128i 将所有负数字节设置为 -128 (0x80) 并保留所有其他字节