[yii\\web\\IdentityInterface](http://www.yiichina.com/doc/api/2.0/yii-web-identityinterface)接口就是我们要实现的东西了,咱可以随便定义一个类去实现这个接口,但通常情况下都是用一个AR模型来实现它
而这个AR模型对应的表就是你系统里设计的**用户表**
示例:
~~~php
namespace app\models;
class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface{
public static function tableName(){
return 'user';
}
/**
* 这个方法用于根据ID查找用户
* @param mixed $id 用户ID,根据各自系统的设计不同,可能会是字母,但通常是数字
*/
public static function findIdentity($id)
{
return static::findOne($id);
}
/**
* 这个方法用于根据用户名查找用户
* @param string $username 用户名
*/
public static function findByUsername($username)
{
return static::findOne(['username' => $username]);
}
/**
* 返回用户ID
*/
public function getId()
{
return $this->id;
}
/**
* 通过类似OAuth协议产生的token来找用户,实际一般不会往db里找,而是往缓存里找
*/
public static function findIdentityByAccessToken($token, $type = null)
{
throw new \yii\base\ErrorException('暂未实现'); //不实现这个方法不会影响基本登录的处理,我们先学基础
}
/**
* 返回OAuth的key
*/
public function getAuthKey()
{
throw new \yii\base\ErrorException('暂未实现'); //不影响基本使用
}
}
~~~
类似这样的代码其实在[下载安装](http://www.kkh86.com/it/yii2/guide-pre-install.html)提到的应用模板里已经有了,打开yii-demo\\models\\User.php就能看到
虽然官方的实现略有不同,但思路都一样,大家都为了从某个数据载体中取得用户数据(官方是从一个配置数组里for循环扫描查找,我们实际上是往db里找)
这样就实现了返回对应的用户id等信息,接下来学习怎么用起来,让封装好的处理逻辑Yii实现登入登出之类的处理
- 目录
- 配置
- 简介
- 别名
- gii
- 配置项
- 模型
- 简介
- 增删改查
- AR和model
- 模型事件
- 场景
- query查询
- 增删改
- AR查询器
- 模型关系定义
- AR模型连表查询
- fields
- where拼接
- 模块
- 创建模块
- 控制器
- 表单
- 跳转
- 响应
- 验证器
- Action
- 组件
- url
- 分页
- 验证码
- 缓存
- 文件上传
- 预启动组件
- 事件
- 自定义组件
- redis
- 日志
- 行为
- cookie和session
- 基础知识
- 创建一个类
- 配置一个类
- object基类
- component组件类特性
- phpstorm无法更改php等级
- url地址美化
- 过滤器
- 请求处理
- 请求组件
- 响应组件
- header
- 用户登录
- 实现IdentityInterface接口
- 登录
- 自动检测登录
- 获取用户信息
- 访问行为追踪
- phpstorm+postman断点调试