要回答你的问题,需要明白一件事——Yii2
提供一些helper类/接口供开发人员轻松实现用户身份验证,但并不总是需要遵循或使用其中任何一个。所以我的以下答案只是解释default一些类的行为。
这始终是一个很好的起点Yii2 高级模板在我看来,了解框架工作流程的源代码非常容易阅读。
- 它到底是如何工作的
Yii2
框架提供了许多core组件在其静态上下文中,您始终可以通过以下方式调用它们Yii::$app->
。核心组件之一是user
,它实际上是一个实例yii\web\User
和所有的default魔法就在这个类中。
不仅user
,您可能还需要使用其他core组件也是如此。我不确定你想了解它的工作方式有多深,如果我没有给你足够深入的解释,我强烈建议你阅读源代码。一旦完成,您将获得源代码composer install
,或者去他们的github进行代码追踪 -https://github.com/yiisoft/yii2/tree/master/framework https://github.com/yiisoft/yii2/tree/master/framework
- 完成身份验证所需的所有步骤。
首先,你应该有一个User
实现的类IdentityInterface
并延伸ActiveRecord
,请参见高级模板中的示例:https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/User.php https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/User.php .
并在您的配置中设置$identityClass
of user
上述自定义组件User
班级。这是最小设置User
.
接下来,您必须有一个控制器,其方法映射到请求 URL,例如“/login”。在这个方法中,你应该用你的方式来提取User
实例 -$u
。这是您的身份验证所在的位置。
然后你可以打电话Yii::$app->user->login($u)
登录;Yii::$app->user->logout()
注销。
登录后,您可以通过以下方式获取当前用户实例:Yii::$app->user->identity
.
- 必需的数据库字段或架构。
这取决于你,取决于你的需要。该模板只是让您了解如何设计User
ActiveRecord 类但不受其限制 -username
and passwordHash
是很常见的东西,但你总是可以有自己的模式。
- 如何验证多种用户类型。
我不太明白这个问题。希望其他人能够提供帮助。
- 我还需要考虑哪些其他事项?
如果你决定使用框架支持的RESTful,记得实现findIdentityByAccessToken()
在你的User
类,详情见http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html
暂时想到一个,以后可能会补充其他的。