
获得徽章 0
- 各位码友们,我想问一下困扰我很久的问题,就是那些大厂的权限控制(接口权限、资源权限)是怎么实现的?因为我看网上基本都是RBAC这一套,但是都没有细说里面的实现;我不清楚他们校验权限这一块是每次都查数据库还是先缓存到redis里,还有比如某个角色被修改(比如了某个接口的权限);我是这么做的:首先redis里缓存整个角色对应的权限列表(角色能调用的接口列表),使用redis存储登录的用户信息和绑定的角色列表(拥有的角色id);用户调用接口时携带的token先到redis里查一下有没有这个token,通过token拿到用户拥有的角色id列表,再去遍历这个用户的角色列表看当前调用的接口地址有没有包含,如果当前用户所有角色遍历完没有这个接口权限,就表示没有权限反之表示有权限;这一整个步骤都是用lua脚本在redis里执行的,虽然感觉比直接查数据库快,但整个校验都放在redis里也感觉不太妥,所以想问一下大家都是怎么做的,感觉网上很少又说具体实现。展开赞过11
- 各位码友们,我想问一下困扰我很久的问题,就是那些大厂的权限控制(接口权限、资源权限)是怎么实现的?因为我看网上基本都是RBAC这一套,但是都没有细说里面的实现;我不清楚他们校验权限这一块是每次都查数据库还是先缓存到redis里,还有比如某个角色被修改(比如了某个接口的权限);我是这么做的:首先redis里缓存整个角色对应的权限列表(角色能调用的接口列表),使用redis存储登录的用户信息和绑定的角色列表(拥有的角色id);用户调用接口时携带的token先到redis里查一下有没有这个token,通过token拿到用户拥有的角色id列表,再去遍历这个用户的角色列表看当前调用的接口地址有没有包含,如果当前用户所有角色遍历完没有这个接口权限,就表示没有权限反之表示有权限;这一整个步骤都是用lua脚本在redis里执行的,虽然感觉比直接查数据库快,但整个校验都放在redis里也感觉不太妥,所以想问一下大家都是怎么做的,感觉网上很少又说具体实现。展开等人赞过116
- 各位码友们,我想问一下困扰我很久的问题,就是那些大厂的权限控制(接口权限、资源权限)是怎么实现的?因为我看网上基本都是RBAC这一套,但是都没有细说里面的实现;我不清楚他们校验权限这一块是每次都查数据库还是先缓存到redis里,还有比如某个角色被修改(比如了某个接口的权限);我是这么做的:首先redis里缓存整个角色对应的权限列表(角色能调用的接口列表),使用redis存储登录的用户信息和绑定的角色列表(拥有的角色id);用户调用接口时携带的token先到redis里查一下有没有这个token,通过token拿到用户拥有的角色id列表,再去遍历这个用户的角色列表看当前调用的接口地址有没有包含,如果当前用户所有角色遍历完没有这个接口权限,就表示没有权限反之表示有权限;这一整个步骤都是用lua脚本在redis里执行的,虽然感觉比直接查数据库快,但整个校验都放在redis里也感觉不太妥,所以想问一下大家都是怎么做的,感觉网上很少又说具体实现。展开赞过评论1