您的位置:首页 > 编程学习 > > 正文

yii2对比springboot(yii2.0框架使用 beforeAction 防非法登陆的方法分析)

更多 时间:2021-10-24 10:37:58 类别:编程学习 浏览量:189

yii2对比springboot

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

本文实例讲述了yii2.0框架使用 beforeAction 防非法登陆的方法。分享给大家供大家参考,具体如下:

beforeAction基本原理:

对比

1、执行顺序

init > beforeAction

2、调用子函数时,两个函数都不会再次执行

3、返回值

init返回false继续执行,beforeAction停止执行

4、执行EXIT,全部停止

从框架的示例代码来看,init用于初始化数据,beforeAction用户事件的处理

代码

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • // 登录统一验证
  • 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;
  •     }
  • }
  • 其他的控制器使用的时候进行继承一下就可以了!

  • ?
  • 1
  • class UserController extends BaseWebController
  • 防非法登陆的方法:

    首先写一个公共控制器 让其他所以需要防止非法登陆的页面继承一下这个公共控制器

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • <?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);
  •  }
  • }
  • 然后在任意一个控制器中加入一段代码 不需要所有控制器都写 只写一个控制器里面就行

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • public function beforeAction($action)
  • {
  •   if(!parent::beforeAction($action))
  •   {
  •    return false;
  •   }
  • }
  • 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

    原文链接:https://blog.csdn.net/yangshuainan/article/details/78778542

    标签:Yii beforeAction
    您可能感兴趣