yii用户认证体系

ticklishrabbit 发布于1年前 阅读4731次
0 条评论

yii2.0认证体系:

认证:

如何使用认证框架呢?

该框架链接了不同组件以支持登录,想要使用该框架你需要这么做:

  1. 设置用户组件yiiwebUser 在config/web.php中配置

      
      //用户组件
      'components'=>
      [
          'user' =>
           [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
            'idParam' => '__user',
            'identityCookie' => ['name' => '__user_identity', 'httpOnly' => true],
            'loginUrl' => ['/member/auth'],
           ]
      ]
    
  2. 创建一个类实现 implements yiiwebIdentityInterface接口
    在接口中实现抽象方法

 public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    public static function findIdentityByAccessToken($token, $type = null)
    {
        return null;
    }

    public function getId()
    {
        return $this->userid;
    }

    public function getAuthKey()
    {
        return '';
    }

    public function validateAuthKey($authKey)
    {
        return true;
    }
    

那么如何使用用户组件呢??

我们首先在commonController下定义behaviors方法 重写父类的方法

    protected $actions = ['*'];
    protected $except = [];
    protected $mustlogin = [];
    protected $verbs = [];
    /*行为过滤*/        
    public function behaviors()
    {
        return [
            //访问过滤
            'access' => [
               //操作的方法
                'class' => \yii\filters\AccessControl::className(),
                //设置允许访问的方法  白名单
                'only' => $this->actions,
                //设置禁止访问的名单  黑名单
                'except' => $this->except,
                //定义登录与未登录的两种规则  
                'rules' => [
                    [
                        //未登录用户  不允许访问
                        'allow' => false,
                        //操作方法过滤
                        'actions' => empty($this->mustlogin) ? [] : $this->mustlogin,
                        //未登录 使用?
                        'roles' => ['?'],
                    ],
                    [
                     //登录用户  允许访问
                        'allow' => true,
                        'actions' => empty($this->mustlogin) ? [] : $this->mustlogin,
                        'roles' => ['@'],
                    ],
                ],
            ],
            //访问方式
            'verbs' => [
                'class' => \yii\filters\VerbFilter::className(),
                'actions' => $this->verbs,
            ],
        ];
    }         

然后我们继承commonController,就拥有了behaviors的行为了 只要重写父类的属性 即可实现过滤
比如 可以这么玩:

class MemberController extends CommonController
{
    //处理login方法  不加以控制  
    protected $except = ['login'];
    //限制访问方式 只能是post请求
    protected $verbs=[
        'confirm'=>['post']
    ];
    public function login()
    {
        return 'ok'
    } 
} 

查看原文: yii用户认证体系

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。