• laravel(4.2) +Zizaco


    操作步骤:https://github.com/Zizaco/entrust/tree/1.0

    这篇博客说的蛮详细的:http://blog.boolw.com/?p=241

    简化后的步骤

    1.在根项目composer.json下require键下添加以下代码(注意:在”laravel/framework”: “4.2.*”,后追加逗号):

    "zizaco/entrust": "1.2.*@dev"

    2.执行下面命令

    $ composer update

    3.在你的config/app.php添加'ZizacoEntrustEntrustServiceProvider'的结束$providers

    'providers' => array(
    
        'IlluminateFoundationProvidersArtisanServiceProvider',
        'IlluminateAuthAuthServiceProvider',
        ...
        'ZizacoEntrustEntrustServiceProvider',
    
    ),

    4.config/app.php后面添加'Entrust' => 'ZizacoEntrustEntrustFacade'$aliases

    'aliases' => array(
    
        'App'        => 'IlluminateSupportFacadesApp',
        'Artisan'    => 'IlluminateSupportFacadesArtisan',
        ...
        'Entrust'    => 'ZizacoEntrustEntrustFacade',
    
    ),

    5.设置的属性值config/auth.php。这些值将使用entrust来引用正确的用户表和模型.

    6.现在生成entrust迁移,它将生成<timestamp>_entrust_setup_tables.php迁移。目录在你当前执行的项目下的  managedatabasemigrations 里

    $ php artisan entrust:migration

    7.运行下面的语句,生产相关联的四张表

    $ php artisan migrate

    注意:
    SQLSTATE[HY000]: General error: 1005 Can't create table 'laravelbootstrapstarter.#sql-42c_f8' (errno: 150) (SQL: alter table `assigned_roles` add constraint assigned_roles_user_id_foreign foreign key (`
      user_id`) references `users` (`id`)) (Bindings: array (
      ))
    也许在这步创建assigned_roles表,会报外键管理错误:你可以检查下,用户表的主键是否设置 UNSIGNED属性,或是 id列在你的用户表没有user_idassigned_roles字段。并且都是INT(10)

    生产的四张数据表解释:

      roles - 用户组信息表;

      assigned_roles - 用户和用户组之间的对应关系;

      permissions - 权限信息表;

      permission_role - 权限和用户组之间的对应关系.

    8.创建模型

    a.创建一个角色模型的例子app/models/Role.php:

    <?php
    
    use ZizacoEntrustEntrustRole;
    
    class Role extends EntrustRole
    {
    
    }

    b.创建一个权限模型的例子app/models/Permission.php:

    <?php
    
    use ZizacoEntrustEntrustPermission;
    
    class Permission extends EntrustPermission
    {
    
    }

    c.接下来,使用HasRole在你现有的特征User模型。例如:

    <?php
    
    use ZizacoEntrustHasRole;
    
    class User extends Eloquent /* or ConfideUser 'wink' */{
        use HasRole; // Add this trait to your user model
    
    ...

    这将会奏效,使关系Role和下面的方法roles, hasRole( $name ), can( $permission ),ability($roles, $permissions, $options)在你的User模型。

    9.别忘了dump composer autoload

    $ composer dump-autoload

    二.使用

    1.让我们首先创建以下RolePermission:

    $owner = new Role;
    $owner->name = 'Owner';
    $owner->save();
    
    $admin = new Role;
    $admin->name = 'Admin';
    $admin->save();

    2.接下来,创建了两个角色让我们然后分配给用户。HasRole使用非常容易:

    $user = User::where('username','=','Zizaco')->first();
    
    /* role attach alias */
    $user->attachRole( $admin ); // Parameter can be an Role object, array or id.
    
    /* OR the eloquent's original: */
    $user->roles()->attach( $admin->id ); // id only

     错误解决办法:

    问题1:Missing argument 2 for IlluminateViewEnginesCompilerEngine::handleViewException(), called in E:wampwwwwholesaleappsmanagecompiled.php on line 9519 and defined 
    

    当操作多对的情况下,可以看看vendorzizacoentrustsrcEntrustHasRole.php 方面里面的第三个参数是的对了:
    public function roles()
        {

            return $this->belongsToMany(Config::get('entrust::role'), Config::get('entrust::assigned_roles_table'), 'user_id', 'role_id');
        }
  • 相关阅读:
    爬虫07-requests库cookie和session
    爬虫06-处理不信任的SSL证书
    爬虫05-requests库用法
    爬虫04-cookie
    网络爬虫-爬取拉勾网不成功,登录设置cookie
    爬虫03-简单使用代理
    爬虫02-简单伪装浏览器
    爬虫01-urllib常用函数
    01-matplotlib简单绘图
    21-pandas_apply和transform
  • 原文地址:https://www.cnblogs.com/zouzhe0/p/6695458.html
Copyright © 2020-2023  润新知