关于yii2:Yii2框架基础模板使用多组用户增加admin

5次阅读

共计 1566 个字符,预计需要花费 4 分钟才能阅读完成。

首先配置文件新增一组,copy user 组件即可 属性可调整

    'components' => [
        // 其余...
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'admin' => [
            'class'           => 'yii\web\User',
            'identityClass'   => 'app\admin\models\Admin',
            'enableAutoLogin' => true,
            'loginUrl'        => 'admin/default/xxx',//admin 的登录页
            'identityCookie'  => ['name' => '_admin_identity', 'httpOnly' => true],
            // 这 5 个我的项目必须配置 否则会和 user 登录状态发生冲突
            'idParam'                   => '__admin_id',
            'authKeyParam'              => '__admin_authKey',
            'authTimeoutParam'          => '__admin_expire',
            'absoluteAuthTimeoutParam'  => '__admin_absoluteExpire',
            'returnUrlParam'            => '__admin_returnUrl',
        ],

在控制器,假如咱们减少了一个 admin 模块

<?php
namespace app\admin\controllers;

use Yii;
use yii\web\Controller;
use yii\filters\AccessControl;

class DefaultController extends Controller
{public function behaviors()
    {
        return [
            'access' => ['class' => AccessControl::className(),
                /*
                 * 这里的 user 必须要指定 components 里的后盾用户组组件名称 admin
                 * 否则默认会判断前台用户组 user
                 * 如果你取了其余名字就填写你自定义的名字
                */
                'user'  => 'admin',
                'only'  => ['index', 'signup'],
                'rules' => [
                    [// 不须要登录就能够拜访的办法
                        'allow' => true,
                        'actions' => ['login', 'signup'],
                        'roles' => ['?'],
                    ],
                    [// 必须登录才能够拜访的办法
                        'allow' => true,
                        'actions' => ['index'],
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }


    public function actionIndex()
    {if( Yii::$app->admin->isGuest){return 'admin 没有登陆,如果设置了 AccessControl,其实压根拜访不到这里就会被重定向到管理员登陆界面';}

        $identity = Yii::$app->admin->identity;
    
        return 'Your username :' . $identity->username;
    }

    //admin 登录 实在业务代码会简单一些
    public function actionLogin()
    {$identity = \app\admin\models\Admin::findByUsername('demo');
        return Yii::$app->admin->login($identity) ? 'admin 登陆胜利' : '登陆失败' ;
    }
    
    //admin 退出
    public function actionLogout()
    {return Yii::$app->admin->logout() ? 'admin 登出胜利' : '登出失败' ;
    }
}

除了 admin,你也能够设定其余用户组件,比方供应商,商户须要独立用户表都能够用这种办法

正文完
 0