• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

rbac权限认证,用户权限是保存在 session 中吗?

php 搞代码 4年前 (2022-01-25) 25次浏览 已收录 0个评论
文章目录[隐藏]

<body>

rbac 权限认证.
一种用户登录后,不可能是每次请求都查询一次数据库.
1.是不是把他拥有权限的接口地址,全部取出,然后保存到 sess1本文来#源gaodai$ma#com搞$代*码*网

搞代gaodaima码

ion 中?
2.在 laravel 中,有的接口需要认证,有的接口是开放的,我现在路由是这样,有没有更优雅的方式实现?

<code>Route::group(['prefix' => 'api/v1'],function(){    Route::post('login',"AccountController@Login");    Route::group(['middleware'=>'auth'],function(){        Route::get("paper","PaperController@Index");    });});</code>

3.rbac 中节点表是这么存放的

大的节点下有具体的接口地址,这样合适吗?你们是这么保存的吗?
每次新增接口都要更新表数据.有没有其他更优雅的实现方式.

回复内容:

<body>

rbac 权限认证.
一种用户登录后,不可能是每次请求都查询一次数据库.
1.是不是把他拥有权限的接口地址,全部取出,然后保存到 session 中?
2.在 laravel 中,有的接口需要认证,有的接口是开放的,我现在路由是这样,有没有更优雅的方式实现?

<code>Route::group(['prefix' => 'api/v1'],function(){    Route::post('login',"AccountController@Login");    Route::group(['middleware'=>'auth'],function(){        Route::get("paper","PaperController@Index");    });});</code>

3.rbac 中节点表是这么存放的

大的节点下有具体的接口地址,这样合适吗?你们是这么保存的吗?
每次新增接口都要更新表数据.有没有其他更优雅的实现方式.

1- 存在session里面是必然的,所以修改权限后对应的用户需要重新登陆
2- 没仔细研究过laravel的rbac,不过用中间件看起来已经挺不错了,当然你也可以考虑不在路由的时候进行验证,而是最后分发完成的时候再验证(比如在构造controller的时候验证,当然这要求path是controller/action结构而不是路由地址)
3- 数据结构上满足需求就好,但是你这个有瑕疵,要不都用/开头,要不就都不要/开头。至于每次新增接口都要更新数据表是必然的,专门写个功能自动同步就行了。你截图中的数据明显有问题,id=25的数据pid不应该是4吧。

补充,该设计的另一个缺点就是没有定义顶级权限,这样管理起来会更麻烦。通常我们会定义一个顶级权限,其他的权限都是它的直接/间接子节点,这样admin用户只要具有了顶级权限就ok了,不会受到接口数据更新的影响。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:rbac权限认证,用户权限是保存在 session 中吗?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址