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 相关文章推荐
在JavaScript中调用php程序
Mar 09 PHP
php Undefined index的问题
Jun 01 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
解析php时间戳与日期的转换
Jun 06 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
yii用户注册表单验证实例
Dec 26 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
Mar 17 PHP
php注册审核重点解析(数据访问)
May 23 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
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
JS中的const命令你真懂它吗
2020/03/08 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
python入门教程 python入门神图一张
2018/03/05 Python
PyQt5实现拖放功能
2018/04/25 Python
目前最全的python的就业方向
2018/06/05 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
Django实现跨域请求过程详解
2019/07/25 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
中国央视网签名寄语
2014/01/18 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书