[已解决] 请问我可以在路由里面限定某个用户才能访问某些路由, 而其他用户无法访问么?
1

如题, 想这样直接做个简单的权限管理.请问有这样的方法么

补充:
我的users表 里面 state 字段值:1启用, 2禁用, 3管理员, 4商家. 我根据这个用4楼方法做简单的一个路由访问权限.

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 7
// permission 权限表, 记得创建路由需要别名,推荐使用资源路由
id
user_id
route

加一个中间件在全局里

     // 先获取当前路由名字
        $route = Route::currentRouteName();
        // 判断权限表中这条路由是否需要验证
        if ($permission = Permission::where('route', $route)->exists()) {
            // 当前用户不拥有这个权限的名字
            if (! auth()->user()->permission()->where('route', $route)->exists()) {
                    return  return response()->view('hint.error', [
                    'status' => "权限不足,需要:{$route}权限",
                  ]);
            }
        }
    return $next($request);

大概就是这样子了。

9个月前

整体思路基本就是楼上所诉,如果使用laravel,推荐使用一个扩展enturst
https://github.com/Zizaco/entrust

9个月前

@DavidNineRoc 赞方法

9个月前

@DavidNineRoc 感谢, 受教了, 不过看了您提供的方法后, 我也想到了一个更简单的, 直接用的用户的 state 字段做权限.

1.在用户模型 User.php 创建if_admin方法.

file

2.创建 isAdmin.php 中间件

file

3.路由使用中间件做简单权限

file

这样目的也就达成, 不过这也有个不好的地方, 当一个路由需要同时被 state=3和4的同时访问, 又不被state=1和2 访问的时候我目前就是将路由复制到2个group里面;
因为这只是内部使用的系统, 所以也没在深入研究了.

file

file

初学laravel, 若有什么错误, 还望赐教!谢谢~

9个月前

我是看到菜户才进来的 :cactus:

9个月前

@王举 不说我还没发现打错字了! 尴尬

9个月前

@Larwas 单一权限是这样做的,没问题的

9个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!