原文链接

刚开始接触laravel会遇到这样一个问题,我们在判断用户未登录时跳转至登录页面一般都是建一个控制器基类,在基类的构造函数里面进行判断,如果未登录就重定向到登录页

我用tp比较多,在tp控制器的构造函数里面可以直接使用redirect函数进行跳转动作,然而在laravel却不行,这里要提一个东西,那就是中间件,可以很完美的满足我们的需求,当然这篇文章仅供新手参考,大佬勿喷。

首先在app\Middleware目录下新建一个中间件,这里我命名为CheckLogin

namespace App\Http\Middleware;
use Closure;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class CheckLogin extends Middleware
{public function handle($request, Closure $next, ...$guards){$response = $next($request);if(!session('user')){//判断用户未登录就跳转至登录页面return redirect('login');}//如果已登录则执行正常的请求return $response;}
}

然后在app/Http/Kernel.php里面的$routeMiddleware数组里面,将刚新建的中间件加进去,别名自己命名。我这里命名的是'check.login'。

新建一个控制器基类,在这个基类的构造函数里面去注册这个中间件。除了登录控制器其他的需要用户登录控制器都继承这个基类,这里我命名为BaseController。

namespace App\Http\Controllers\Index;
use App\Http\Controllers\Controller;
class BaseController extends Controller{public function __construct(){$this->middleware('check.login');//检测登录}
}

这样请求如果用户未登录就会重定向到登录页面了。

tp里面也是有中间件,用法也基本一样,因为我比较懒再加上可以直接重定向跳所以就没咋用。

PS:2019/10/24今天在研究tp6的时候发现,直接redirect('xxx/xxx')->send()即可,而不是return,由于框架请求流程机制,这种写法注意如果你send后面的代码在跟判断是否登录的条件紧密相连时在send后可能会有报错,因为框架在响应对象的send方法输出后整个请求流程并没有结束,所以如果遇到报错可以在send后强行终止代码运行,如:redirect('xxx/xxx')->send();exit();,但最好是通过修改判断排除这些报错。

Laravel 构造函数里面重定向跳转无反应【原创】相关推荐

  1. php无刷新实现页面更新,使用laravel和ajax实现整个页面无刷新的操作方法

    1.数据库文件 CREATE TABLE IF NOT EXISTS mr_key ( id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT ' ...

  2. iis php重定向循环,iis和apache及PHP页面设置301重定向跳转方法

    301重定向有很多办法可以实现,如iis可以,apache,php,asp等等都可以快速的设置页面301重定向跳转了,下面我来给各位同学介绍介绍 本文将通过IIS.APACHE.ASP.PHP几种服务 ...

  3. php301重定向跳转,php如何设置301重定向跳转

    php设置301重定向跳转的方法:在跳转前设置状态码[header( "HTTP/1.1 301 Moved Permanently" );header("Locatio ...

  4. 适用所有服务器的全站301重定向跳转教程

    名称:全站301重定向跳转教程 日期:2016-09-30 适用:所有服务器下的301重定向设置 以下使用域名chtml.cn做301重定向操作列子 dns域名解析设置301重定向[通用方式]: 将c ...

  5. 常用nginx rewrite重定向-跳转实例

    常用nginx rewrite重定向-跳转实例: 1,将www.myweb.com/connect 跳转到connect.myweb.com rewrite ^/connect$ http://con ...

  6. 安卓版微信url重定向跳转

    微信url重定向跳转 iso可以正常跳转 安卓显示空白页无法跳转 以前代码如下: $redirect_uri = urlencode('http://bfzf.jyh.com/wxPay/pay.do ...

  7. URL重定向-跳转绕过

    作者:小刚 一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢 本实验仅用于信息防御教学,切勿用于其它用途 URL重定向-跳转绕过 URL重定向 一般利用点 利用姿势 修复 URL重定向 服务端未对传 ...

  8. 只要写了带参构造函数则不会再生成无参构造函数,不管该带参构造函数是否是private的

    如果写了带参构造函数,即使该带参构造函数是private的,直接new对象不传参数时也会报错,需要写出public的无参构造函数时才可以直接new对象不传参数.即只要写了带参构造函数则不会再生成无参构 ...

  9. php重定向跳页,php重定向跳转

    一.用HTTP头信息 也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Co ...

最新文章

  1. SMOTE处理样本不平衡问题
  2. 蓝牙模块引起电路干扰
  3. 软件调试学习笔记(二)—— 调试事件的采集
  4. php的延时sleep函数
  5. STL常用函数总结-vector
  6. Github-推送代码报错“error:RPC failed;curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL,errno 10054”解决方案
  7. 一款性价比远超visio的画图小工具-Dia Diagram Editor(开源-跨平台)
  8. 分享五款好用的PDF编辑工具
  9. simulink常用模块
  10. android的app图标大全,安卓app图标
  11. MYSQL修改编码为utf8无效往表中插入汉字还是失败的解决方法
  12. dell t640 添加硬盘_Dell PowerEdge T640服务器安装教程
  13. 用photoshop制作证件照片
  14. 一位程序员搬家到新加坡的体验
  15. Java程序性能优化 !
  16. Python线程池与进程池
  17. 巴贝奇的困境 by: 天涯ID--先生会算命V1
  18. Cesium第一次搭建环境出不来地球的问题
  19. 商票到期不兑付逾期怎么办
  20. Java码农进阶之路~基本数据类型运算符流程控制-分支三目

热门文章

  1. 隐藏菜单之菜单和搜索
  2. numpy中的zeros函数
  3. sigmoid函数,tanh函数,relu函数,softmax函数
  4. Python标准库shutil的使用( 文件复制删除、文件夹复制删除、压缩包 压缩解压处理模块)
  5. OSI七层协议模型、TCP/IP四层模型和五层协议体系
  6. 英特尔服务器cpu g系列,英特尔Comet Lake-G和U系列SKU清单曝光
  7. mutations的类型常量
  8. ModuleNotFoundError: No module named ‘tensorflow_hub‘
  9. ESP32-CAM上手第一步——资料不能少之我的手记
  10. 【开源项目】股票配资系统开发与设计(二)