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&amp;java(三)
Oct 09 PHP
php仿ZOL分页类代码
Oct 02 PHP
header跳转和include包含问题详解
Sep 08 PHP
php的hash算法介绍
Feb 13 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
PHP解析RSS的方法
Mar 05 PHP
PHP操作mysql数据库分表的方法
Jun 09 PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
Laravel模型间关系设置分表的方法示例
Apr 21 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
基于laravel缓冲cache的用法详解
Oct 23 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP实现动态柱状图改进版
2015/03/30 PHP
ThinkPHP控制器详解
2015/07/27 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
浅谈python 线程池threadpool之实现
2017/11/17 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
经销商订货会主持词
2014/03/27 职场文书
项目建议书模板
2014/05/12 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
提档介绍信范文
2015/10/22 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL