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

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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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);

大概就是这样子了。

6年前 评论
// 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);

大概就是这样子了。

6年前 评论

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

6年前 评论

@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, 若有什么错误, 还望赐教!谢谢~

6年前 评论
王举

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

6年前 评论

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

6年前 评论

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

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!