yii2.0框架使用 beforeAction 防非法登陆的方法分析
本文实例讲述了yii2.0框架使用 beforeAction 防非法登陆的方法。分享给大家供大家参考,具体如下:
beforeAction基本原理:
对比
1、执行顺序
init > beforeAction
2、调用子函数时,两个函数都不会再次执行
3、返回值
init返回false继续执行,beforeAction停止执行
4、执行EXIT,全部停止
从框架的示例代码来看,init用于初始化数据,beforeAction用户事件的处理
代码
// 登录统一验证 public function beforeAction( $action ){ // 验证是否登录 $is_login = $this->checkLoginStatus(); if (in_array($action->getUniqueId(), $this->allowAllAction ) ) { return true; } // 是否已经登录了 没有登录的话 判断登录方式 if(!$is_login) { // 如果是ajax方式进行请求 if ( \Yii::$app->request->isAjax) { $this->renderJSON([], "未登录,请返回用户中心", -302); } else { $this->redirect( UrlService::buildWebUrl("/user/login") ); } return false; } }
其他的控制器使用的时候进行继承一下就可以了!
class UserController extends BaseWebController
防非法登陆的方法:
首先写一个公共控制器 让其他所以需要防止非法登陆的页面继承一下这个公共控制器
<?php namespace frontend\controllers; use Yii; use yii\web\Controller; class PublicController extends Controller{ public function beforeAction($action){ $cookie = \Yii::$app->request->cookies; //取出存入的cookie值 括号里写自己定义的cookie名字 $user_cookie = $cookie->get('user_id'); //判断是否有cookie if(!isset($user_cookie)){ echo "<script>alert('请先登录');location.href='?r=login/login'</script>"; } return parent::beforeAction($action); } }
然后在任意一个控制器中加入一段代码 不需要所有控制器都写 只写一个控制器里面就行
public function beforeAction($action) { if(!parent::beforeAction($action)) { return false; } }
更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
相关推荐
-
yii框架表单模型使用及以数组形式提交表单数据示例
按Yii文档里的描述,Yii在处理表单的一般过程是: 创建表单对应的模型类,设置字段验证规则创建表单提交对应的action,处理提交的内容在视图中创建表单form在刚刚的一个小项目里,想使用ajax提交表单信息并验证保存,又不想用隐藏iframe来做无刷新提交,并且action中能够用到模型类的校验方法,就想到使用表单数组提交的方式,举个例子: form代码: 复制代码 代码如下: <form action='' method='post' name='form_test'> <i
-
Yii2框架实现登陆添加验证码功能示例
本文实例讲述了Yii2框架实现登陆添加验证码功能.分享给大家供大家参考,具体如下: models中 LoginForm.php public $verifyCode; public function rules() { return [ -- ['verifyCode', 'captcha', 'on' => 'login'], //验证码 ]; } public function scenarios() { $scenarios = parent::scenarios(); $scenario
-
yii用户注册表单验证实例
本文实例讲述了yii用户注册表单验证实现方法.分享给大家供大家参考,具体如下: 视图层:register.php <?php //使用小物件生成form元素 $form=$this->beginWidget('CActiveForm'); ?> <!--用户名--> <?php echo $form->labelEx($model,'username');?> <?php echo $form->textField($model,'usernam
-
Yii框架form表单用法实例
本文实例讲述了Yii框架form表单用法.分享给大家供大家参考.具体方法如下: 使用表单 在 Yii 中处理表单时,通常需要以下步骤: 1. 创建用于表现所要收集数据字段的模型类. 2. 创建一个控制器动作,响应表单提交. 3. 在视图脚本中创建与控制器动作相关的表单. 一.创建模型 在编写表单所需的 HTML 代码之前,我们应该先确定来自最终用户输入的数据的类型,以及这些数据应符合什么样的规则.模型类可用于记录这些信息.正如模型章节所定义的,模型是保存用户输入和验证这些输入的中心位置. 取决于
-
Yii2创建表单(ActiveForm)方法详解
本文实例讲述了Yii2创建表单(ActiveForm)的方法.分享给大家供大家参考,具体如下: 由于表单涉及到一些验证方面的信息,属性设置又比较多.比较复杂,所以哪里有什么不正确的地方请留言指点 目录 表单的生成 表单中的方法 ActiveForm::begin()方法 ActiveForm::end()方法 getClientOptions()方法 其它方法:errorSummary.validate.validateMultiple 表单中的参数 表单form自身的属性
-
详细解读PHP的Yii框架中登陆功能的实现
Yii的登陆机制 Yii 生成应用时已经提供了最基础的用户登陆机制.我们用 Yii 生成一个新的应用,进入 protected/components 目录,我们可以看到 UserIdentity.php 文件,里面的 UserIdentity 类里面只有一个 public 函数如下: public function authenticate() { $users=array( // username => password 'demo'=>'demo', 'admin'=>'admin'
-
Yii中表单用法实例详解
本文实例讲述了Yii中表单用法.分享给大家供大家参考,具体如下: 在 Yii 中处理表单时,通常需要以下步骤: 1. 创建用于表现所要收集数据字段的模型类. 2. 创建一个控制器动作,响应表单提交. 3. 在视图脚本中创建与控制器动作相关的表单. 一.创建模型 在编写表单所需的 HTML 代码之前,我们应该先确定来自最终用户输入的数据的类型,以及这些数据应符合什么样的规则.模型类可用于记录这些信息.正如模型章节所定义的,模型是保存用户输入和验证这些输入的中心位置. 取决于使用用户所输入数据的方式
-
PHP Yii框架之表单验证规则大全
Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用.Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程. 废话不多说了,直接给大家贴代码了. <?php class ContactForm extends CFormModel { public $_id; public $contact;//联系人 public $tel;//电话 public $fax;//传真 public $zipcode;//邮编 public $addr;//地址 public $mobile;
-
Yii框架表单提交验证功能分析
本文实例讲述了Yii框架表单提交验证功能.分享给大家供大家参考,具体如下: 一.前端提交的三种方式 前面已经提出,表单提交一共只有三种方式. 1. 前端原生html (1)原生html标签 首先,直接使用html标签的input,a等: 其次,使用css进行布局. 再次,使用js或jquery方式验证 最后,提交(get/post/ajax,目前较多使用jquery提交). 注:该种方式由于较灵活,使用最多. (2)原生form js或jquery方式验证,yii方式提交. 相对灵活 <form
-
yii2.0框架使用 beforeAction 防非法登陆的方法分析
本文实例讲述了yii2.0框架使用 beforeAction 防非法登陆的方法.分享给大家供大家参考,具体如下: beforeAction基本原理: 对比 1.执行顺序 init > beforeAction 2.调用子函数时,两个函数都不会再次执行 3.返回值 init返回false继续执行,beforeAction停止执行 4.执行EXIT,全部停止 从框架的示例代码来看,init用于初始化数据,beforeAction用户事件的处理 代码 // 登录统一验证 public function
-
TP5.0框架实现无限极回复功能的方法分析
本文实例讲述了TP5.0框架实现无限极回复功能的方法.分享给大家供大家参考,具体如下: 最近做项目的时候用到了评论回复,使用ThinkPHP5.0框架做回复碰到了一些问题,简单总结一下.(李昌辉) 1.首先是数据表的设计: create table zy_huifu ( code int auto_increment primary key, #回复代号 puser varchar(50), #回复人员 listcode int, #文章代号 time varchar(50), #回复时间 co
-
YII2.0框架行为(Behavior)深入详解
本文实例讲述了YII2.0框架行为(Behavior).分享给大家供大家参考,具体如下: 行为(Behavior) 使用行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充. 通过将行为绑定到一个类,可以使类具有行为本身所定义的属性和方法,就好像类本来就有这些属性和方法一样. 而且不需要写一个新的类去继承或包含现有类. Yii中的行为,其实是 yii\base\Behavior 类的实例, 只要将一个Behavior实例绑定到任意的 yii\base\Component 实例上
-
Yii2.0框架模型添加/修改/删除数据操作示例
本文实例讲述了Yii2.0框架模型添加/修改/删除数据操作.分享给大家供大家参考,具体如下: 添加数据 $user = new User(); $user->name = 'zhang'; $user->age = 28; $data = $user->save();//添加数据 $data = $user->insert();//添加数据 $id = $user->attributes['id'];//获取当前添加数据后的自增id 修改数据 $user = $User::f
-
Yii2.0框架模型多表关联查询示例
本文实例讲述了Yii2.0框架模型多表关联查询.分享给大家供大家参考,具体如下: 联表查询--hasMany: use app\models\User; $right = Right::findOne(2); //$user = User::find()->where(['right_id' => $right->attributes['id']])->all(); $user = $right->hasMany(User::className(),['right_id' =
-
Yii2.0框架behaviors方法使用实例分析
本文实例讲述了Yii2.0框架behaviors方法使用.分享给大家供大家参考,具体如下: 初学Yii2.0 学习路径:http://www.yii-china.com/ 经过各种学习,积累知识点: (1)控制器 behaviors 过滤数据需要引入如下文件 use yii\filters\AccessControl; use yii\filters\VerbFilter; 首先:什么是过滤器?过滤器就是对不同用户角色的控制: 如(游客->最普通的平民,用户->已经注册的用户,管理员->
-
Yii2.0框架实现带分页的多条件搜索功能示例
本文实例讲述了Yii2.0框架实现带分页的多条件搜索功能.分享给大家供大家参考,具体如下: 方法一 在控制器中 public function actionShow(){ $where['title']=Yii::$app->request->get('title'); $where['content']=Yii::$app->request->get('content'); $query=new Query(); $query->from('votes'); // vote
-
yii2.0框架场景的简单使用示例
本文实例讲述了yii2.0框架场景的简单使用.分享给大家供大家参考,具体如下: 一.规则中使用场景 规则场景的使用 模型层 public function rules() { return [ [['name','product_id'],'required','on'=>'add], ]; } 表示只在add场景下改规则才生效. 在控制器中指定场景: $model->scenario = "add"; 或者 $model = new User(['scenario' =&
-
yii2.0框架多模型操作示例【添加/修改/删除】
本文实例讲述了yii2.0框架多模型操作.分享给大家供大家参考,具体如下: 控制器: <?php namespace app\controllers; use Yii; use yii\web\Controller; use yii\base\Model; use app\models\shopUsers; use app\models\shopLeagueInfo; use yii\web\NotAcceptableHttpException; class UserController ext
-
yii2.0框架实现上传excel文件后导入到数据库的方法示例
本文实例讲述了yii2.0框架实现上传excel文件后导入到数据库的方法.分享给大家供大家参考,具体如下: Model模型 <?php /** * 描述... * @author zcy * @date 2019/8/13 */ namespace app\models; use yii\base\Model; use yii\db\ActiveRecord; use yii\web\UploadedFile; class uploadForm extends ActiveRecord { pu
随机推荐
- html中插入rm格式视频文件的代码
- iOS开发实现随机图片验证码封装
- 修改一行代码提升 Postgres 性能 100 倍
- 浅谈javascript的原型继承
- 在IIS服务器上以CGI方式运行Python脚本的教程
- XMLHttp ASP远程获取网页内容代码
- centOS7安装MySQL数据库
- 用js实现键盘方向键翻页功能的代码
- Node.js站点使用Nginx作反向代理时配置GZip压缩的教程
- Mybatis中的延迟加载案例解析
- C# Winform 调用系统接口操作 INI 配置文件的代码
- 具有负载均衡功能的MySQL服务器集群部署及实现
- Java中浮点数精度问题的解决方法
- 给Linux新手[系列之四]
- c#根据文件类型获取相关类型图标的方法代码
- PHP生成sitemap.xml地图函数
- php实现删除指定目录下相关文件的方法
- 详解python和matlab的优势与区别
- tomcat管道模式 pipeline与valve详解
- 用Node提供静态文件服务的方法