[yii2] 实现所有action方法之前执行一段代码或者方法
我做的是在执行任何方法之前,验证用户登陆状态!
其实就是在controller中写beforeaction()方法,
然后我的方案就是做一个基类,然后让你所有控制器继承你的基类,
如果控制器的基类用__constuct()方法做一些初始化的工作(比如初始化模板引擎),如果你在控制器里实现了__construct,你还需要在__construct里调用parent::__construct()就太麻烦了。
然后在此基类中写入方法beforeAction()或者init(),
在YII2里这两个方法自动就执行啦!
别忘了最后return true;
class BaseController extends Controller{
// 白名单
public $allowAllAction = [
// 登陆控制器的白名单
'seller/login/login',
];
/**
* 登录统一验证 (每次动作先执行本方法)
*/
public function beforeAction( $action )
{
// 检验登陆状态合法性
$is_login = $this->checkSellerLoginStatus();
if( in_array( $action->getUniqueId(), $this->allowAllAction ) )
{
return true;
}
if( empty($_COOKIE['name']) )
{
// 非法跳转
$this->redirect( UrlService::buildSellerUrl( '/login/login' ) );
return false;
}
return true;
}
}
[yii2] 实现所有action方法之前执行一段代码或者方法的更多相关文章
- Unity 延迟执行一段代码的较为优雅的方式
在Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍. 一般会用到Invoke和InvokeRepeating方法.顾名思义,第一个是执行一次,第二个是重复执行. 看下定义: voi ...
- [转]Unity 延迟执行一段代码的较为优雅的方式
Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍. 一般会用到Invoke和InvokeRepeating方法.顾名思义,第一个是执行一次,第二个是重复执行. 看下定义: void ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- springboot项目启动成功后执行一段代码的两种方式
springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...
- springboot工程启动即执行一段代码
最近在做一个项目, 需要Tomcat启动后就执行一段代码 在这里需要用到CommandLineRunner这个接口, Spring boot的CommandLineRunner接口主要用于实现在应用初 ...
- JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。
反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足. while语句结构: while(判断条件) { 循环语句 } 使用w ...
- C#实现不影响当前线程情况下间隔一定的时间执行一段代码
大家知道C#间隔一定时间去执行一段代码,常用的有 1. Thread.Sleep(多少毫秒); 2. 使用Timer控件间隔一定的时间,设置执行一次 以上两种方法,实现起来不难,弊端在于会阻塞当前线程 ...
- springboot启动后执行一段代码的方式
文章转载自: https://www.cnblogs.com/zuidongfeng/p/9926471.html https://blog.csdn.net/zknxx/article/detail ...
- PHP通过反射方法调用执行类中的私有方法
PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 下面我们演示一下如何通过反射,来调用执行一个类中的私有方法: <?php //MyClass这个类中包 ...
随机推荐
- java物流查询接口测试代码-快递100
测试代码 返回json格式,xml/html格式自行修改参数 import java.io.IOException; import java.io.InputStream; import java.n ...
- 搜索引擎如何检索结果:Python和spaCy信息提取简介
概览 像Google这样的搜索引擎如何理解我们的查询并提供相关结果? 了解信息提取的概念 我们将使用流行的spaCy库在Python中进行信息提取 介绍 作为一个数据科学家,在日常工作中,我严重依赖搜 ...
- 谷歌2019 学术指标发榜:CVPR首次进入Top 10,何恺明论文引用最高!
[导读]今天,谷歌发布了2019最新版学术指标,对收录的会议和期刊的影响力进行排名.AI类的多个顶会进入榜单Top 100,CVPR更是进入前10,而何恺明的"深度残差网络"单篇引 ...
- Ali_Cloud++:安装 RabbitMQ安装及环境配置
注意事项:rabbitMA版本和erlang并不是同步更新的,会出现版本不匹配,安装不了. 两都版本对应 参考官网文档 其它下载地址 1):Erlang安装 (因为是erlant语言编写的, ...
- 【LeetCode】18.四数之和
题目描述 18. 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 t ...
- Ubuntu环境下如何设置文件(文件夹)权限
查看文件(文件夹)权限 cd到需要查看的文件(文件夹)所在目录并执行: (base) duanyongchun@hc1217:~$ ls -l #查看当前文件夹下的所有文件(包括文件夹)的权限 如图: ...
- Prism 源码解读7-导航
介绍 Prism提供了一个非常强大的功能导航,导航的意思就是指定对应的View显示.这个导航的强大之处有: 可以设置导航前后的动作 可以指定View实例的生命周期,可以是否导航到新的View实例 提供 ...
- jQuery数组去重复
例如: var yearArray = new Array("三二一", "三二一", "学历", "学历", &quo ...
- html前端之css基础
CSS 属性导航: CSS 属性组 动画 背景 边框和轮廓 框 颜色 内容页的媒体属性 尺寸 盒子模型(新) 盒子模型(旧) 字体 内容生成 网格 超链接 线框 列表 外边距 字幕 多列 内边距 页面 ...
- 2.Metasploit数据库配置及扫描模块介绍
01.Metasploit数据库配置及扫描模块介绍 信息收集 信息收集是渗透测试中首先要做的重要事项之一,目的是尽可能多的查找关于目标的信息,我们掌握的信息越多,渗透成功的机会越大.在信息 ...