热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

YII2自定义控制器验证behaviors()

YII2自带验证函数,在每个控制器的behaviors()方法中。可是实现自由验证和跳转。(默认的一些验证,跳转很麻烦,暂时没有找到跳转到自定义路径的方法。就是验证失败后跳转路径。如果有知道的

YII2 自带验证函数,在每个控制器的behaviors()方法中。可是实现自由验证和跳转。(默认的一些验证,跳转很麻烦,暂时没有找到跳转到自定义路径的方法。就是验证失败后跳转路径。如果有知道的朋友,可以留意告诉我下,先谢谢啦!)

使用背景:

        YII2自带有RABC权限验证插件的,百度一下,使用教程很多。但是感觉太麻烦了,本人项目不需要那么复杂的,主要是还有建表,写的代码太多了,比较懒(这个是主要原因)。

         于是自己下一个简单的用户权限验证方法,正对权限比较单一的。如果太复杂的权限建议还是去看看RABC验证吧。


废话不多说,直接上代码:

        首先创建一个自定义的验证类


namespace frontend\filter;
use Yii;
use yii\base\ActionFilter;
use yii\web\Controller as ctrl;
class UserFilter extends ActionFilter
{
public function beforeAction($action)
{
if(parent::beforeAction($action)) // TODO: Change the autogenerated stub 写死了,返回true
{
$user = Yii::$app->user->identity;
if($user->state == 0){
//return ctrl::redirect(['site/msg','msg' => '账户异常,请联系我们。']);
ctrl::redirect(['site/msg','msg' => '账户异常,请联系我们。']);
return false;
}

return true;
}
return false;
}
}

return部分为修改,经过使用,发现一个问题,不能直接return跳转,必须返回false,不然会出现view加载后再跳转,尴尬

很尴尬,都验证不通过了,后面还是继续运行,肯定是报错的,比如查询某个语句,都出现验证失败了,查询一个空后面直接使用就会报错的。这个是重点。。。。


这个是一个简单的用户资料完善的验证,如果用户没有填写手机号,就跳转到对应页面让用户添加自己手机号。必须绑定手机

然后在  behaviors()中使用


找一个需要验证的控制器中的behaviors()函数,进行修改:

public function behaviors()
{
return [
'access' => [ // 这个就是自带的验证登录的,懒得改,直接用的
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
'userfilter' => [ //这个地方名字貌似可以随便写
'class' => 'frontend\filter\UserFilter', //对应的类
],
];
}

这样就OK了,是不是超级简单,这个是我写的一个简单的实现方法,下面这个自定义的验证,一样可以写

// 'only' => ['只使用的action'],
// 'except' => ['除了这些action外都使用'],


好啦,大概就这些,接下来有复杂点的,可以基于这个慢慢研究,可以很灵活的。


转载请标明出处:https://blog.csdn.net/u012533474/article/details/80046900


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • Flutter 开发中集成极光推送的详细步骤
    本文详细介绍了如何在 Flutter 项目中集成极光推送服务,包括配置和测试的具体步骤。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 后端开发|php教程yii后端开发-php教程yii2高级版快速安装手机内核源码下载,ubuntu进不去了,tomcat设置成域名,爬虫本地资料,php构建表单,四川个人抖音seo ... [详细]
author-avatar
諾言DJ_791
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有