Yii2:用户身份验证的确切工作原理是什么?

Eja*_*rim 9 php yii2

我不明白AuthenticationYii2.在Yii 1那里有一个身份类,我们需要使用该authentication()方法并调用CWebUser::login()以实现我们的目标.

身份验证的主要流程是Yii 2什么?它是如何工作的?

你能解释一下这个:

  • 完成身份验证所需的所有步骤.
  • 必需的数据库字段或架构.
  • 如何验证多个用户类型.
  • 我需要考虑的其他一些事情是什么?

Vic*_*ong 21

要回答您的问题,需要了解一件事 - 为开发人员Yii2提供一些辅助类/接口,以便轻松实现用户身份验证,但并不总是需要遵循或使用其中任何一个.所以我的以下答案只是解释了某些类的默认行为.

看看Yii2高级模板和源代码以了解框架的工作流程总是一个很好的起点,在我看来,它非常容易阅读.

- 它是如何工作的

Yii2框架在其静态上下文中提供了许多核心组件,您可以随时调用它们Yii::$app->.其中一个核心组件是user,它实际上是一个实例,yii\web\User所有默认魔法都在这个类中.

不仅如此user,您可能还需要使用其他核心组件.我不确定你想要了解它的工作方式有多深,如果我没有给你足够深刻的解释,我强烈建议你阅读源代码.一旦你做了composer install,你就会得到源代码,或者去他们的github进行代码跟踪 - https://github.com/yiisoft/yii2/tree/master/framework

- 完成身份验证所需的所有步骤.

首先,您应该有一个User实现IdentityInterface和扩展的类ActiveRecord,请参阅高级模板中的示例:https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/User.php.

而在配置,设置$identityClassuser组件上面的自定义User类.这是最小的设置User.

接下来,您必须拥有一个控制器,其方法映射到请求URL,例如"/ login".在这种方法中,您应该使用自己的方式提取User实例 - $u.这是您的身份验证所在的位置.

然后你可以打电话Yii::$app->user->login($u)登录; Yii::$app->user->logout()注销.

登录后,您可以随时随地获取当前用户实例Yii::$app->user->identity.

- 必需的数据库字段或架构.

取决于您的需要,这取决于您.该模板只是让您了解如何设计UserActiveRecord类但不受其限制 - username并且passwordHash是非常常见但您可以始终拥有自己的架构.

- 如何验证多个用户类型.

我不太明白这个问题.希望别人可以帮忙.

- 我需要考虑的其他一些事情是什么?

如果您决定使用框架支持的RESTful,请记住findIdentityByAccessToken()在您的User课程中实现,请参阅http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html中的详细信息.

我此刻可以想到一个,可能会在以后添加其他内容.