我不理解Authentication
中的Yii2
。在Yii 1
中有一个标识类,我们需要使用authentication()
方法并调用CWebUser::login()
来实现我们的目标。
Yii 2
中的主要身份验证过程是什么? 它是如何运作的?
请您解释一下:
答案 0 :(得分: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。
在您的配置中,将$identityClass
组件user
设置为上述自定义User
类。这是User
的最小设置。
接下来,您必须拥有一个控制器,其方法映射到请求URL,例如" / login"。在此方法中,您应该使用自己的方式提取User
实例 - $u
。这是您的身份验证所在的位置。
然后你可以致电Yii::$app->user->login($u)
登录;注销Yii::$app->user->logout()
。
登录后,您可以通过Yii::$app->user->identity
在任何地方获取当前用户实例。
取决于您的需要,这取决于您。该模板只是让您了解如何设计User
ActiveRecord类但不受其限制 - username
和passwordHash
是非常常见的,但您始终可以拥有自己的架构。< / p>
我不太明白这个问题。希望别人可以提供帮助。
如果您决定使用框架支持的RESTful,请记住在findIdentityByAccessToken()
课程中实施User
,请参阅http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html
此刻我可以想到一个,可能会在以后添加其他内容。