yii2.0框架使用 beforeAction 防非法登陆的方法分析


Posted in PHP onSeptember 11, 2019

本文实例讲述了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;
  }
}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
用PHP+java实现自动新闻滚动窗口
Oct 09 PHP
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
php中日期加减法运算实现代码
Dec 08 PHP
php建立Ftp连接的方法
Mar 07 PHP
php文件操作相关类实例
Jun 18 PHP
PHP实现图片上传并压缩
Dec 22 PHP
php实现头像上传预览功能
Apr 27 PHP
php实现多站点共用session实现单点登录的方法详解
Sep 18 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
基于PHP实现发微博动态代码实例
Dec 11 PHP
Laravel框架验证码类用法实例分析
Sep 11 #PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 #PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 #PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 #PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 #PHP
PHP 模拟登陆功能实例详解
Sep 10 #PHP
Yii框架日志操作图文与实例详解
Sep 09 #PHP
You might like
最省空间的计数器
2006/10/09 PHP
windows xp下安装pear
2006/12/02 PHP
php 无限极分类
2008/03/27 PHP
php at(@)符号的用法简介
2009/07/11 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
pyenv命令管理多个Python版本
2017/03/26 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python3爬虫全国地址信息
2019/01/05 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
音乐教学随笔感言
2014/02/19 职场文书
贺卡寄语大全
2014/04/11 职场文书
自主招生教师推荐信
2014/05/10 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2015年安全月活动总结
2015/03/26 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
小学生暑假生活总结
2015/07/13 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server