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 日常开发小技巧
Sep 23 PHP
php中大括号作用介绍
Mar 22 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 PHP
php字符串函数 str类常见用法示例
May 15 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
Protoss热键控制
2020/03/14 星际争霸
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
民主生活会发言材料
2014/10/20 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js