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 相关文章推荐
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
解析php防止form重复提交的方法
Jul 01 PHP
php对数组排序代码分享
Feb 24 PHP
Yii调试SQL的常用方法
Jul 09 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
thinkPHP5.0框架模块设计详解
Mar 18 PHP
php中str_pad()函数用法分析
Mar 28 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 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中变量引用与变量销毁机制分析
2014/11/15 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
Python中的 enum 模块源码详析
2019/01/09 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
Python如何获取文件路径/目录
2020/09/22 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
计算机个人求职信范例
2014/01/24 职场文书
教学质量评估实施方案
2014/03/17 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
爱心募捐通知范文
2015/04/27 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
vue动态绑定style样式
2022/04/20 Vue.js
mysql 排序失效
2022/05/20 MySQL
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript