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

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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 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);

大概就是这样子了。

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);

大概就是这样子了。

7年前 评论

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

7年前 评论

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

7年前 评论
王举

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

7年前 评论

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

7年前 评论

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

7年前 评论