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

问答 Larwas ⋅ 于 6个月前 ⋅ 最后回复由 DavidNineRoc 6个月前 ⋅ 781 阅读

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

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

本文章首发在 Laravel China 社区
回复数量: 7
  • DavidNineRoc 当神不再是我们的信仰,那么信仰自己吧,努力让自己变好不辜负自己的信仰... 5
    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

  • mingyun
    6个月前

    @DavidNineRoc 赞方法

  • Larwas
    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:

  • Larwas
    6个月前

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

  • DavidNineRoc 当神不再是我们的信仰,那么信仰自己吧,努力让自己变好不辜负自己的信仰...
    6个月前

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

暂无评论~~
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 100 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档