Laravel 5.4重新登录实现跳转到登录前页面的原理和方法


Posted in PHP onJuly 13, 2017

前言

本文主要给大家介绍的是关于Laravel5.4重新登录跳转到登录前页面的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:

一、应用场景:

用户登陆后存在过期时间,超时用户需重新登录。例:当用户在/user/2 页面,登陆过期后跳转到登陆页面,登陆后用户还应在/user/2而不是home/index。

二、实现原理

在判断用户过期后,存储用户当前的url地址到session中,下次登陆后跳转到此url地址。

三、laravel中的具体实现

路由中间件(判断登陆状态) 这里以cookie是否过期判断用户登陆状态,中间件只判断登陆相关判断和执行,不做多余操作(登录时我使用cookie的值$token作为session的键存储),代码如下:

public function handle($request, Closure $next) {
 //判断cookie是否存在
 if ($token = Cookie::get('token')) {
 //判断session信息,保持状态一致
 if ($request->session()->get($token)) {
  return $next($request);
 }
 }

 //获取当前url,跳转到登陆页
 $returnUrl = urlencode($request->getRequestUri());

 return redirect('/login?reurl=' . $returnUrl); }

登陆端(处理与页面交互以及跳转逻辑)这里做的是跳转到登陆页,这个可以在中间件实现,只有这一句,with实现的是将reurl闪存,提供前端使用。

return redirect('/')->with('reurl', $returnUrl);

页面端(判断闪存信息) 判断闪存的信息,这里分ajax和submit登陆,submit应该很少了,ajax下获取reurl,然后后端登陆判断reurl。

@if (session('reurl'))
  <input type="hidden" name="reurl" value="{{ session('reurl') }}"/>
 @endif

登陆(登陆逻辑) 省略了判断用户账户密码,和存储cookie,session的逻辑,最后前端获取url,location.href = 'url',跳转到原url地址。

$reurl = $request->get('reurl');

$url = empty($reurl) ? '/home/index' : $reurl;

return response($url);

注:本文只贴出了实现重新登录的相关代码,实际代码请按照实际业务做对应修改。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP4实际应用经验篇(5)
Oct 09 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
php获取文件内容最后一行示例
Jan 09 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
两个php日期控制类实例
Dec 09 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php获取'/'传参的值简单方法
Jul 13 #PHP
php多文件打包下载的实例代码
Jul 12 #PHP
php实现网页端验证码功能
Jul 11 #PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 #PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 #PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 #PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 #PHP
You might like
Yii2如何批量添加数据
2016/05/17 PHP
javascript 定义新对象方法
2010/02/20 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python通过select实现异步IO的方法
2015/06/04 Python
python中学习K-Means和图片压缩
2017/11/20 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
pytorch简介
2020/11/11 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
教师实习的自我鉴定
2013/10/26 职场文书
体操比赛口号
2014/06/10 职场文书
供用电专业求职信
2014/07/07 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
单位车辆管理制度
2015/08/05 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript