有些请求是谁都能访问但是只能访问属于自己那个的权限控制

来源:3-9 API安全机制之审计日志

笨猪大难临头

2020-02-14

请求级别权限控制可以在网关做,但是有些请求是谁都能访问但是只能访问属于自己那个,比如根据评论id删除用户的评论,所有用户都可以调用这个接口,但是这个请求只有评论id属于该用户时才能调用,这种级别权限控制是不是只能在具体方法调用时在去自行判断. 比如调用根据评论id删除的方法前 ,先根据评论id获取评论所属用户名,在跟当前登陆用户名比较,相同就允许删除.这样. 我感觉要搞执行两条sql不太好,有没更好的办法. 而且我还想就是如果当前角色是超级管理员,不管评论属不属于它都可以执行删除, 但是因为在具体方法上判断权限,万一有天角色权限变了我不是得在每个具体方法调用都改一遍

写回答

1回答

Bobby219

2020-02-15

第一个,当前登陆的用户信息,不一定只放用户名啊,用户的id也可以放进去,这时候你只比较用户的id就可以了,或者直接让前端把用户名一起传过来,这样可以直接比较用户名。

第二个问题,可以建立一个权限服务,当前用户是不是有权限执行这个请求,通过权限服务进行判断。

0
2
笨猪大难临头
你觉得要不还是把sql直接设计成根据用户id和评论id删除 delete from xx where 评论id = xx and 用户id = 当前登陆用户id 好, 而不是直接根据评论ID删除,这样就不用鉴权判断评论是不是属于当前用户,你觉得哪种好
2020-02-16
共2条回复

Spring Cloud微服务安全实战 可落地的安全方案

从API到复杂微服务场景,实战部署可落地的安全方案。

1029 学习 · 370 问题

查看课程