首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Yii2上编写自定义身份验证机制的最佳实践

在Yii2上编写自定义身份验证机制的最佳实践
EN

Stack Overflow用户
提问于 2015-07-01 23:36:50
回答 1查看 867关注 0票数 3

我需要为我的web应用程序编写一个非常具体的身份验证。在端有API,它接受登录+密码对并返回结果(和一个令牌)。除了从API获得的登录令牌之外,我不想在Yii2端存储任何登录信息。这一定是我为我的客户服务的唯一方式(所以我不使用类似OAuth的应用程序)。

在Yii2中覆盖“经典”代码的最佳实践是什么?只需使用过滤器和修改用户模型?示例:

首先,我收到一个令牌,并将其保存到某个会话中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$token = GatewayAPI::login($user, $password);

然后,我所做的每一个内部请求都将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$result = GatewayAPI::addPosition($token, $data);

所以,我没有任何数据库可以使用,只有缓存和内存。几乎所有事情都是在API端处理的。

我的任务是实现登录检查--如果从API接收到令牌--那么它就被认为是成功的。为了在当前会话中使用该令牌(可能在memcache中,它不能向公众开放)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 22:49:16

事实上,Yii2在任何地方都不需要登录/密码。如果您指的是\yii\web\User,则不需要修改或扩展用户模型。您需要创建实现IdentityInterface的自己的类,并在配置components->user->identityClass中将该类设置为userIdentity

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
    'components' => [
        'user' => [
            'class' => 'yii\web\User', // not necessary, this is by default
            'identityClass' => 'my\namespace\User' 
        ]
    ]
] 

接口中有5种方法,它们不是关于登录/通过的。您的这个类可以在数据库中存储您想要的所有内容。例如,您可以将任何流行的用户模块复制到您的项目中,从该用户模型中删除与登录/传递存储和搜索相关的所有内容,并添加您的API功能--它将工作。

UPD。添加的功能如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$token = GatewayAPI::login($user, $password);
$user = \my\namespace\User::findOne(['token' => $token]);
Yii::$app->user->login($user);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31178314

复制
相关文章
在 Docker 上开发应用 - 编写 Dockerfile 的最佳实践
Docker 可以通过从 Dockerfile 中读取指令来自动构建镜像,Dockerfile 是一个文本文件,其中包含了按顺序排列的构建指定镜像所需的全部命令。Dockerfiles 采用特殊格式,使用一系列特别的指令。可以在 Dockerfile 参考页面 学习这些基础知识。如果对于编写 Dockerfile 你还是新手,那么接着往下看吧。
拓荒者
2019/03/11
1.9K0
Jenkins 在 Kubernetes 上的最佳实践
Jenkins 是由 Java 编写的编排引擎,在 Full GC 时会 Stop The World(STW)。在大规模构建时,STW 可能会导致 Jenkins 无法处理新的请求。
陈少文
2021/06/05
1.1K0
编写Dockerfile的最佳实践
虽然 Dockerfile 简化了镜像构建的过程,并且把这个过程可以进行版本控制,但是很多人构建镜像的时候,都有一种冲动——把可能用到的东西都打包到镜像中。这种不正当的 Dockerfile 使用也会导致很多问题:
KevinYan
2020/02/27
1.1K0
编写 Android Library 的最佳实践
一直以来,技术圈里面只要涉及 Android Library 的文章,几乎都在讲如何发布到 Maven/Jcenter,却很少见到有文章来指导大家如何编写一个规范又好用的 Android Library。
Android技术干货分享
2019/04/18
1.2K0
编写 Android Library 的最佳实践
编写 Shell 脚本的最佳实践
由于工作需要,最近重新开始拾掇 shell 脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟 shell 脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的 main 函数,不忍直视。同时,由于历史原因,shell 有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。
用户6543014
2019/10/25
1.1K0
编写 Shell 脚本的最佳实践
编写优雅代码的最佳实践
Robert Martin曾说过"在代码阅读中说脏话的频率是衡量代码质量额唯一标准"。同时,代码的写法应当使别人理解它所需的时间最小化,也就是说我们写的代码是给人看的而不是给机器看的。那么,如何编写优雅代码呢?可以从思想层面和具体技巧层面来优化代码,思想层面指的是遵循面向对象设计原则,本期介绍的是具体技巧。
木可大大
2018/04/21
1.7K2
编写优雅代码的最佳实践
编写优雅代码的最佳实践
Robert Martin曾说过"在代码阅读中说脏话的频率是衡量代码质量额唯一标准"。同时,代码的写法应当使别人理解它所需的时间最小化,也就是说我们写的代码是给人看的而不是给机器看的。那么,如何编写优雅代码呢?可以从思想层面和具体技巧层面来优化代码,思想层面指的是遵循面向对象设计原则,本期介绍的是具体技巧。
木可大大
2018/07/25
4220
编写优雅代码的最佳实践
编写Shell脚本的最佳实践
由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。 考虑到上面的这些原因,我查阅了一些相关的文档,发现这些问题其实很多人都考虑过,而且也形成了一些不错的文章,但是还是有点零散。因此我就在这里把这些文章稍微整理了一下,作为以后我自己写脚本的技术规范。
mythsman
2022/11/14
8700
编写Shell脚本的最佳实践
Java异常机制的最佳实践
改进的错误恢复机制是提高代码健壮性的最强有力的方式。错误恢复在我们所编写的每一个程序中都是基本的要素,但是在 Java 中它显得格外重要,因为 Java 的主要目标之一就是创建供他人使用的程序构件。
JavaEdge
2022/11/30
1K0
Java异常机制的最佳实践
用TypeScript编写React的最佳实践
如今, React 和 TypeScript 是许多开发人员正在使用的两种很棒的技术。但是把他们结合起来使用就变得很棘手了,有时很难找到正确的答案。不要担心,本文我们来总结一下两者结合使用的最佳实践。
ConardLi
2020/06/04
4.7K0
编写Linux Shell脚本的最佳实践
由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。 考虑到上面的这些原因,我查阅了一些相关的文档,发现这些问题其实很多人都考虑过,而且也形成了一些不错的文章,但是还是有点零散。因此我就在这里把这些文章稍微整理了一下,作为以后我自己写脚本的技术规范。
用户5807183
2019/07/15
1.1K0
编写Linux Shell脚本的最佳实践
我们编写 React 组件的最佳实践
刚接触 的时候,在一个又一个的教程上面看到很多种编写组件的方法,尽管那时候 框架已经相当成熟,但是并没有一个固定的规则去规范我们去写代码。 在过去的一年里,我们在不断的完善我们的做法,直到满意为止。 本文会列出我们自己在使用的最佳实践,不管你是刚入门的新手还是很有经验的开发者,我们都希望本文对你有所帮助。 开始之前,先列几条: 我们使用ES6/ES7 如果你无法区分页面组件和容器组件,推荐阅读 这篇文章 如果有更好的意见或建议,请在评论区告诉我,谢谢 基于 Class 的组件 基于 Class 的组
企鹅号小编
2018/02/05
7170
我们编写 React 组件的最佳实践
编写Linux Shell脚本的最佳实践
由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。
马哥linux运维
2019/06/17
7720
编写Linux Shell脚本的最佳实践
编写Linux Shell脚本的最佳实践
来自:Myths的个人博客 作者:myths 链接:https://blog.mythsman.com/2017/07/23/1/(点击尾部阅读原文前往) 前言 由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不
小小科
2018/05/02
1.1K0
编写Linux Shell脚本的最佳实践
编写 Spring 配置文件的最佳实践
Spring 是一个功能强大的Java应用框架,提供各种配置选项。它的核心特性是为简单的Java对象(PO??JO)提供服务,称为 Bean。 Spring使用依赖注入(DI)来实现简化和增加可测试性
Java架构
2018/05/04
1K0
编写高性能 Java 代码的最佳实践
摘要:本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优化和架构方面的调整。以下是译文。
lyb-geek
2019/05/07
1.2K0
编写高性能 Java 代码的最佳实践
编写高性能 Java 代码的最佳实践
在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法。我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。
哲洛不闹
2018/09/14
1.3K0
编写高性能 Java 代码的最佳实践
Kerberos 身份验证在 ChunJun 中的落地实践
Kerberos,在古希腊神话故事中,指的是一只三头犬守护在地狱之门外,禁止任何人类闯入地狱之中。
袋鼠云数栈
2022/12/16
1.6K0
5个编写高效Makefile文件的最佳实践
在编写Makefile文件之前,我们需要明确我们的目标是什么。我们需要知道我们需要构建哪些文件,以及它们之间的依赖关系。为了确定目标,我们需要考虑以下问题:
小万哥
2023/05/20
3070
5个编写高效Makefile文件的最佳实践
Spring对JDBC的最佳实践--上
在一开始,会介绍一下原生JDBC的使用,此时不会涉及到spring的使用,但是我们还是利用yml文件来存放数据源配置信息,因此我们需要一个yaml读取的工具类
大忽悠爱学习
2022/05/10
8490
Spring对JDBC的最佳实践--上

相似问题

在Apple Watch上实现登录机制的最佳实践

13

在JSON对象上编写外观的最佳实践

17

编写自定义代码部分的最佳实践?

21

ETL处理中记录机制的最佳实践

12

编写数组的最佳实践

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文