【问题标题】:Laravel 4 permissionsLaravel 4 权限
【发布时间】:2013-01-13 01:50:59
【问题描述】:

所以这基本上是我目前得到的 sql 模型:

这是,它会如何看待我的用户控制器(stackoverflow 格式):

if (Auth::user()->is('admin'))
                    {
                            if (Auth::user()->can('delete'))
                            {
                                    echo 'hurra!';
                            }
                    }

权限键可能看起来像这样

admin.delete 可能是 user.can.buy 之类的东西

现在我想知道它是否可以,我如何在方法中执行它:

public function is($roleName)
        {
                $role = $this->roles;

                if ($role->name == $roleName)
                {
                        return true;
                }

                return false;
        }

我觉得这个不错

但是

public function can($permissionKey)
        {
                $permissions = $this->roles->permissions()
                        ->where('key', $permissionKey)
                        ->count();

                if ($permissions > 0)
                {
                        return true;
                }

                return false;
        }

我觉得有点尴尬。这是我用 eloquent orm 选择数据的正确方式吗?

提前致谢!

【问题讨论】:

  • 对我来说一切都很好。如果你想比较代码,我在github.com/Toddish/Verify 做了一个类似的包。
  • 感谢您的提示。肯定会检查你的想法。

标签: php authentication permissions laravel laravel-4


【解决方案1】:

我安装了一个分析器并检查了所有触发的 sql 查询:

select * from users where id = '1' limit 1

roles 中选择 * 其中id = '1' 限制 1

permissions 内部连接permission_role 中选择count(*) 作为聚合permissions.id = permission_role.permission_id 其中permission_role.role_id = '1' 和@987654333 @ = 'view.admin'

这对我来说看起来不错,所以我认为我这样做的方式还可以。

【讨论】:

    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2014-01-28
    • 2017-03-11
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2013-01-15
    相关资源
    最近更新 更多