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 相关文章推荐
php字符串截取问题
Nov 28 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
php使用google地图应用实例
Dec 31 PHP
详解PHP中的PDO类
Jul 06 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
PHP implode()函数用法讲解
Mar 08 PHP
php数组遍历类与用法示例
May 24 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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
PHP利用str_replace防注入的方法
2013/11/10 PHP
php生成excel文件的简单方法
2014/02/08 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
JS重学系列之聊聊new操作符
2019/03/04 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
Python函数返回不定数量的值方法
2019/01/22 Python
Python变量访问权限控制详解
2019/06/29 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python pandas如何向excel添加数据
2020/05/22 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python xlwt模块使用代码实例
2020/06/10 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
普天C++笔试题
2016/03/20 面试题
商务英语专业自荐信
2013/10/14 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
优秀教研组申报材料
2014/12/26 职场文书
表扬信范文
2019/04/22 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers