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 file_get_contents 函数超时的几种解决方法
Jul 30 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
php自动提交表单的方法(基于fsockopen与curl)
May 09 PHP
php处理复杂xml数据示例
Jul 11 PHP
php实现每日签到功能
Nov 29 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
JS实现小星星特效
2019/12/24 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python中关于使用模块的基础知识
2015/05/24 Python
Python3实现Web网页图片下载
2016/01/28 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
python文件读写代码实例
2019/10/21 Python
python时间日期操作方法实例小结
2020/02/06 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
创业计划书的内容步骤和要领
2014/01/04 职场文书
高一地理教学反思
2014/01/18 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
维稳承诺书
2015/01/20 职场文书
税务会计岗位职责
2015/04/02 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang