用户认证

what?

用户认证是鉴别用户身份的过程,它通常使用标识符(用户名/有消息)和加密令牌(密码/存取令牌)来鉴别用户身份。

在Yii框架中认证是登陆功能的基础。

how?

Yii2.0本身提供了认证框架,该框架连接不同的组件来进行登陆操作。想要使用这个框架你需要做以下工作:

①设置用户组件:yii\web\User,该组件主要用来帮助我们管理用户的认证状态,如:登陆,退出,以及获取用户信息的操作。

②创建一个含有实际认证逻辑的类去继承实现yii\web\IdentifyInterface接口,实现以后再去连接user组件才能帮我们完成登陆服务.

    必须要实现的方法有:

     1.  yii\web\IdentityInterface::findIdentity()  根据用户认证ID来查找用户的认证实例,当使用session来维护认证状态时,需要用到这个方法

    2. yii\web\IdentityInterface::findIdentityByAccessToken()  根据AccessToken来获取用户的认证实例,一般情况下 AccessToken是和用户进行绑定的,主要用于无状态的restful

    3. yii\web\IdentityInterface::getId()   获取用户认证的实例ID

    4. yii\web\IdentityInterface::getAuthKey()  基于cookie登陆时获取秘钥

    5. yii\web\IdentityInterface::validateAuthKey()  基于cookie登陆时获取秘钥的验证

需要注意的是,由于使用场景的不同,有些方法我们不一定要具体实现,但是一定要有这个方法,里面的内容可以为空

相关属性:

identity: Yii::$app->user->identity 当前用户的身份实例,未认证返回NULL

id : Yii::$app->user->id 当前用户ID,未认证返回NULL

isGuest: Yii::$app->isGuest 判断当前用户是否为游客(未认证的)

相关方法:

login:将当前登录的用户身份记录到yii\web\User中

    登录相关:(可以在config/web 中components的user中进行设置)

             enableSession : 是否启用session

            enableAutoLogin :是否启用自动登录

logout:注销用户

        启用session的情况下,才有用:

                logout(true)  : 清除全部session

               logout(false) : 保留session数据







   

你可能感兴趣的:(用户认证)