Laravel5.2 对后台用户ACL权限管理没有效果

php中文网
发布: 2016-06-06 20:13:59
原创
1595人浏览过

laravel5.1 acl教程

按照上面的教程,用户表使用默认的user表的话,一切都是很顺利的,可是我最终的目的是后台的admin表进行权限管理,于是把教程里的user都换成了admin,这时候出了问题,在blade中@can('edit-post')@can('delete-post')全部没通过

v4.6科美智能企业网站管理系统专业版(带手机版)
v4.6科美智能企业网站管理系统专业版(带手机版)

科美智能企业网站管理系统专业版是以asp+access进行开发的企业网站系统,软件还包含了全站生成静态页面的功能。 特别提醒: 1.切勿用那些调试软件调试(比如:aspweb、NETBOX、小旋风等),如果您想本地运行源码,请参照赠品中的环境搭建教程。 2.切勿用免费空间(试用空间可以),因为免费空间一般没有写入权限,且会挂广告破坏程序,程序无法正常运行。 3.后台添加内容后,如果有的前台

v4.6科美智能企业网站管理系统专业版(带手机版) 108
查看详情 v4.6科美智能企业网站管理系统专业版(带手机版)

于是我换到了控制器

<code>        $admin = Auth::guard('admin')->user();
        if($admin->can('edit-post')){
            echo 1;
        }</code>
登录后复制

通过,成功输出1,yeah!

于是我就想到了会不会是模版中的can是取的user表?于是我又把auth.php中的默认guard改成admin

<code>    'defaults' => [
        'guard' => 'admin',
        'passwords' => 'users',
    ],</code>
登录后复制

成功!yeah!
好了,问题来了,我不改auth.phpguard的默认值,怎样可以在模版中让can判断的是admin表的用户?

回复内容:

laravel5.1 acl教程

按照上面的教程,用户表使用默认的user表的话,一切都是很顺利的,可是我最终的目的是后台的admin表进行权限管理,于是把教程里的user都换成了admin,这时候出了问题,在blade中@can('edit-post')@can('delete-post')全部没通过

于是我换到了控制器

<code>        $admin = Auth::guard('admin')->user();
        if($admin->can('edit-post')){
            echo 1;
        }</code>
登录后复制

通过,成功输出1,yeah!

于是我就想到了会不会是模版中的can是取的user表?于是我又把auth.php中的默认guard改成admin

<code>    'defaults' => [
        'guard' => 'admin',
        'passwords' => 'users',
    ],</code>
登录后复制

成功!yeah!
好了,问题来了,我不改auth.phpguard的默认值,怎样可以在模版中让can判断的是admin表的用户?

看了下源码,似乎并不支持!!!

<code>    /**
     * Compile the can statements into valid PHP.
     *
     * @param  string  $expression
     * @return string
     */
    protected function compileCan($expression)
    {
        return "<?php if (Gate::check{$expression}): ?>";
    }</code>
登录后复制
<code>    /**
     * Determine if the given ability should be granted for the current user.
     *
     * @param  string  $ability
     * @param  array|mixed  $arguments
     * @return bool
     */
    public function check($ability, $arguments = [])
    {
        try {
            $result = $this->raw($ability, $arguments);
        } catch (AuthorizationException $e) {
            return false;
        }

        return (bool) $result;
    }
    </code>
登录后复制

模板里可以这样写,只不过很长,我把if里边的存到一个公用函数中了

<code>@if(Gate::forUser(Auth::guard('admin')->user())->allows('$priv'))

@endif 

</code>
登录后复制
相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号