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 读取和修改大文件的某行内容的代码
Oct 30 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
ThinkPHP登录功能的实现方法
Aug 20 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
PHP mysqli事务操作常用方法分析
Jul 22 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 xml文件操作代码(一)
2009/03/20 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
jquery密码强度校验
2015/12/02 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
实例解析Array和String方法
2016/12/14 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
python实现简单神经网络算法
2018/03/10 Python
flask中过滤器的使用详解
2018/08/01 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
python实现QQ批量登录功能
2019/06/19 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python实现交并比IOU教程
2020/04/16 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
人力资源管理专业自荐书
2014/07/07 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers