Yii2:用户身份验证到底是如何工作的? [关闭]

2024-05-07

我不明白Authentication in Yii2. In Yii 1有一个身份类别,我们需要与authentication()方法和调用CWebUser::login()实现我们的目标。

认证的主要流程有哪些Yii 2? 它到底是如何运作的?

您能否解释一下以下内容:

  • 完成身份验证所需的所有步骤。
  • 必需的数据库字段或架构。
  • 如何验证多种用户类型。
  • 我还需要考虑哪些其他事项?

要回答你的问题,需要明白一件事——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.

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

这取决于你,取决于你的需要。该模板只是让您了解如何设计UserActiveRecord 类但不受其限制 -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

暂时想到一个,以后可能会补充其他的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2:用户身份验证到底是如何工作的? [关闭] 的相关文章

  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • preg_match_all JS 等效吗?

    Javascript 中是否有与 PHP 的 preg match all 等效的函数 如果没有 将正则表达式的所有匹配项放入数组的最佳方法是什么 我愿意使用任何 JS 库来让它变得更容易 您可以使用match使用全局修饰符 gt gt g
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • 如何在xampp中启用zip.dll

    你好 我正在使用 Windows 版 xampp 我想运行 https github com johmue mysql workbench schema exporter 导出我的架构 我在 mysql 工作台中创建架构并保存它 当我运行程
  • 使用 chr + rand 生成随机字符 (A-Z)

    我使用以下命令生成 A Z 的随机字符 但它偶尔会生成 符号 知道如何防止这种情况吗 也许字符范围不正确 letter chr 64 rand 0 26 用这个就更方便了 大写 letter chr rand 65 90 小写 letter
  • 如何获取共同好友列表

    你好 我想知道如何才能找到共同的朋友 我目前在思考这个问题时遇到问题 我有一个名为 users 的表 它是这样的 id name 1 Kenny 2 Jack 3 Jimmy 4 Chris 5 Meg 6 Jake 7 Micheal 8
  • 如何简单地检查服务器PHP版本是否为5或以上?

    我正在为程序创建预安装清单 该程序需要 PHP5 因此我需要检查列表脚本来检查 PHP5 的可用性 有一个函数为phpversion 将以以下格式返回5 3 6或类似的 然而 我希望清单非常简单 只是告诉你是或否 所以显示当前版本对我没有多
  • PHP session_destroy() 警告会话对象销毁失败[重复]

    这个问题在这里已经有答案了 我有这个 php 脚本 但在破坏会话时遇到问题 我收到这个警告 警告 session destroy 会话对象销毁失败 第 6 行 C xampp htdocs template nota finalizare
  • AJAX VS PHP 动态网页?

    当您只能使用 php 来实现动态网页时 为什么要使用 AJAX 呢 使用 AJAX 的主要原因是用户体验 UX 现在 AJAX 不一定会改善每个实例的用户体验 所以在很多地方坚持使用纯 PHP 完全没问题 但想象一下这样的情况 网站上有一个
  • CodeIgniter 控制器构造函数

    我对 codeigniter 很陌生 我想知道控制器中构造函数的含义是什么 我在 codeigniter 教程中看到以下代码 class upload extends CI Controller function construct par
  • 如何在按钮上执行mysql [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions PHP 单击按钮时如何执行 SQL
  • PHP-向某些浏览器显示消息

    我已经搜索过这个 我发现的一切都超出了我的需要 我以前用 JavaScript 做过这个 但我真的更喜欢使用 PHP 我将如何根据访问者使用的浏览器向他们显示消息 Example IE 用户会看到 您正在使用 Internet Explor
  • PHP 7.2 计数错误

    警告 count 参数必须是数组或对象 实现 Countable in 我在以下行中收到上述错误 if 0 gt count this gt xprop 有人可以帮助我理解这一点吗 我对 PHP 还很陌生 问题显然是 this gt xpr
  • 如何访问带有美元符号的 PHP 对象属性?

    我有一个 PHP 对象 其属性中有一个美元 符号 如何访问该属性的内容 例子 echo object gt variable Ok echo object gt variable WithDollar Syntax error With 变
  • Laravel 5:在控制台内核的 Schedule() 函数中使用 Cache:: 或 DB::

    我正在尝试以不同的用户配置的时间间隔在 Laravel 5 中运行 Artisan 控制台命令 我已经构建了控制台命令 并拥有一个包含 运行频率 配置值的数据库 具有 Eloquent 模型 内schedule 的函数App Console
  • 动态重新定义 PHP 类函数?

    我试图弄清楚如何动态导入大量 PHP 类函数 例如 class Entity public function construct type require once type functions php person new Entity
  • 我可以在 php 中的 SESSION 数组上使用 array_push 吗?

    我有一个想要在多个页面上使用的数组 因此我将其设为 SESSION 数组 我想添加一系列名称 然后在另一个页面上 我希望能够使用 foreach 循环来回显该数组中的所有名称 这是会议 SESSION names 我想使用 array pu
  • 使用 .htaccess 进行 PHP 设置时出现 500 内部服务器错误

    当我使用时 htaccess对于以下 PHP 设置 我得到500 Internal Server Error访问网站时 中的代码 htaccess file php flag display errors off php flag log

随机推荐

  • 嵌套列表递归python的序列

    给定一些数字 n 我想生成一个大小为 n 的列表 其中以下示例显示列表中的第 n 个元素应该如何 对于 n 0 返回 对于 n 1 返回 对于 n 2 返回 对于 n 3 返回 基本上 它采用先前的列表并将它们附加到新列表中 我尝试过以下方
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许执行任何操作

    我构建了一个应用程序并在本地部署 并且它运行良好 我将其部署在远程服务器上 并开始收到主题行中提到的异常 这不是因为任何防火墙问题 我改变了我的hibernate xml通过我的 IP 地址而不是 localhost 进行连接 现在我在本地
  • Trace.Assert 没有中断,也不显示消息框

    我有一个 WPF 应用程序 我在其中在画布上移动数据 当我像怪物一样尝试用鼠标移动数据时 问题就开始了 以下是操作的顺序 画布上的 MouseMove 被触发 在 MouseMove 中 我更改了一些数据 Trace Assert 失败 调
  • 在 Ember 中将模型属性插入 Img 元素 URL

    我有一个模型image id财产 我有一个包含图像元素的模型视图 我需要将 id 插入图像元素的src属性来完成图像的 URL 以便我有效地执行此操作 img src 我的第一次尝试使用了 Handlebars 助手 img src 但这也
  • 如何列出所有可用的打印机驱动程序,例如 C# 中的“添加打印机向导”?

    很可能我必须为此编写一些过于复杂的东西 并且没有常规的方法来做到这一点 但是 我怎样才能获得所有可用打印机驱动程序的列表 就像添加打印机向导按制造商然后按打印机显示驱动程序时所做的那样 我基本上需要一个自定义的添加打印机对话框 如果没有这个
  • 在 Solidity 中初始化一个大的固定长度数组

    我正在以太坊上构建一个游戏作为我的第一个项目 但我面临着存储和天然气限制 我想在区块链上存储一个存储智能合约 以便在部署后查询 我确实需要使用手动插入的常量值来初始化固定长度数组 我的情况如下 contract A some states
  • 在php中将图像添加到Excel中 php中的excel

    我举的例子是phpexcel https phpexcel codeplex com 我刚刚尝试在 GET 方法中传递值 我已经完成了 现在我正在尝试在 a3 列中添加图像 参考代码
  • 迁移到 AndroidX 后 Google 登录无法正常工作

    我已将 Google Sign 集成到我的 Android 应用程序中 当我使用 spp Compact v28 库时它工作得很好 但在将我的应用程序迁移到 androidx 后失败 但出现以下异常 java lang Incompatib
  • xslt 匹配过滤结果集的前 x 项

    对 xslt 很陌生 所以如果这是一个基本问题 请原谅我 我无法在 SO 上或通过 Google 搜索找到答案 我想要做的是返回一组经过过滤的节点 然后对该组中的前 1 或 2 个项目进行模板匹配 然后另一个模板与其余项目匹配 但是如果没有
  • 当现在允许使用虚拟基地移动分配运算符时,会有危险吗?

    这涉及到C 问题的解决http www open std org jtc1 sc22 wg21 docs cwg defects html 1402 http www open std org jtc1 sc22 wg21 docs cwg
  • 使用 C#,将包含二进制数据的字符串转换为字节数组的最有效方法是什么

    虽然有 100 种方法可以解决转换问题 但我关注的是性能 假设字符串仅包含二进制数据 就性能而言 在 C 下将该数据转换为 byte 而不是 char 最快的方法是什么 澄清 这不是 ASCII 数据 而是恰好位于字符串中的二进制数据 UT
  • 如何在 CQRS 中处理基于集合的一致性验证?

    我有一个相当简单的域模型 涉及一系列Facility聚合根 鉴于我使用 CQRS 和事件总线来处理从域引发的事件 您如何处理集合的验证 例如 假设我有以下需求 Facility必须有一个唯一的名称 由于我在查询端使用最终一致的数据库 因此在
  • Android:使用 putExtra 从片段访问容器活动对象?

    我正在使用操作栏和片段构建选项卡界面 我需要帮助将数据从容器活动发送到片段 详细地说 我在容器活动中有作业对象 我根据工作对象中的信息创建了几个选项卡 如公司详细信息 经验详细信息等 我需要将作业对象传递给这些片段 以便它可以显示相应的信息
  • VBA 窗体最多可以容纳多少个控件?

    我目前正在构建一个 Excel 2003 应用程序 该应用程序需要非常复杂的表单 并且担心控件数量的限制 目前它有 154 个控件 使用Me Controls Count 这应该是准确的 对吧 但可能只完成了大约三分之一 工作流程确实适合单
  • 如何在 Perl 中使用数组引用中的索引作为方法引用?

    如同这个关于迭代子例程引用的问题 https stackoverflow com questions 452529 how do i iterate over dereference an array of subroutine refs
  • SSL 连接在 MySQL Workbench 中有效,但在 DBeaver 中无效

    为当今读者编辑 这是旧版本 DBeaver 中的一个错误 随后已修复 我尝试在 DBeaver 中使用 SSL 连接到 Google Cloud SQL MySQL 实例时遇到 访问被拒绝 错误 我能够 在 MySQL Workbench
  • 我=我++;未定义。 i = foo(i++) 也未定义吗?

    例如 int foo int i return i int main int i 0 i i Undefined i foo i return 0 对于这种情况 当前的 ISO C 标准会指定什么 EDIT 这是我感到困惑的地方 除非另有说
  • WPF/Silverlight 面试问题? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您希望某人在 WPF Silverlight 开发工作的面试中了解哪些类型的问题 入门级 强大的 NET 2 0背景并且愿意学习 解释一下依赖属
  • ItemTemplate 与 ControlTemplate

    我对WPF的学习感到困惑 我看到 ControlTemplate 用于确定列表框中每个项目的外观 这不是 ItemTemplate 在列表框中的用途吗 有什么不同 ControlTemplate 允许您更改现有控件的外观和感觉 例如 使普通
  • Yii2:用户身份验证到底是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白Authentication in Yii2 In Yii 1有一个身份类别 我们需要与authentication 方法和调