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 相关文章推荐
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
详解Yii2.0 rules验证规则集合
Mar 21 PHP
laravel 创建命令行命令的图文教程
Oct 23 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
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
WordPress JQuery处理沙发头像
2009/06/22 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
Python struct模块解析
2014/06/12 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Django 前后台的数据传递的方法
2017/08/08 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
三个python爬虫项目实例代码
2019/12/28 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
中间件分为哪几类
2012/03/14 面试题
专科应届生求职信
2013/11/24 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
英语分层教学实施方案
2014/06/15 职场文书
企业党员个人自我评价
2014/09/20 职场文书
个人务虚会发言材料
2014/10/20 职场文书
护士实习自荐信
2015/03/06 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
生日寿星公答谢词
2015/09/29 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android