PHPHub 本地开发环境下,为什么谁都可以进管理后台呢

如题

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 19

@lx1036 自己部署的PHPHub,所有注册用户都可以进 /admin

8年前 评论

管理员能来指导下不,现在所有用户都能登录后台随意修改,毫无安全性可言

8年前 评论

这个社区是开源的?

8年前 评论

@yezhou 项目地址是?

8年前 评论
monkey

这是为 本地开发 提供便利。

当时在开发时,调试本地环境要频繁的登录后台,为了减少中间多次登录等待的时间,因此程序设定:用户访问后台时,若当前环境为 local,且用户未登录,则直接使用 1 号管理员用户登录。

相关的代码可见 config/administrator.php 约第 88 行:

    ...

    'permission' => function () {
        // 如果是本地环境,则直接登录
        if (App::environment('local')) {
            if (!Auth::check()) {
                $user = App\Models\User::first();
                $user && Auth::login($user);
            } else {
                return true;
            }
        }

        if (!Auth::check() || !Auth::user()->can('visit_admin')) {
            return false;
        }

        return true;
    },

    ...
8年前 评论

@monkey 可以了,谢谢,顺便再问下我可以控制普通用户只能评论不能发帖不

8年前 评论

@monkey 还是有问题,我把env文件改了 APP_ENV=product,1号用户也登录不了后台了

8年前 评论
monkey

@yezhou 你可以先把本地环境设置为 local,然后登陆后台,看你的 1 号用户是不是管理员

file

如上图,用户需在 FounderMaintainer 里才有访问后台的权限

8年前 评论

@monkey 我的用户组是 Founder了,而且用户id=1,但APP_ENV改掉之后就进不了后台
file

8年前 评论

可以了,改了下代码,设置好了普通用户不能发帖,现在的问题是新注册用户是怎么自动分组的呢

8年前 评论
monkey

@yezhou 你可以在用户注册成功后,给用户分配用户组

如在 UserCreator.php 文件的 create 方法里,加上如下代码:


...

    public function create(UserCreatorListener $observer, $data)
    {
        $user = User::create($data);
        if (! $user) {
            return $observer->userValidationError($user->getErrors());
        }
        $user->cacheAvatar();

        // 分配用户组
        $user->attachRole(...);
        return $observer->userCreated($user);
    }
8年前 评论

经过修改,全部搞定啦,感谢 @monkey

8年前 评论

挖坟,同样的问题 APP_ENV=product 1号用户也无法登录后台,@yezhou @monkey

8年前 评论
Lonexw

@园子大魔王丶 填坑,设置完之后需要清除一下缓存:

php artisan cache:clear
8年前 评论

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