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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
PHP学习之数组值的操作
Apr 17 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
PHP入门经历和学习过程分享
Apr 11 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
php绘制一条弧线的方法
Jan 24 PHP
php准确获取文件MIME类型的方法
Jun 17 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
PHP分享图片的生成方法
Apr 25 PHP
PHP goto语句用法实例
Aug 06 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
重新认识php array_merge函数
2014/08/31 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
jquery控制display属性为none或block
2014/03/31 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
对numpy中shape的深入理解
2018/06/15 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
委托书格式
2014/08/01 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python