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 相关文章推荐
实用函数3
Nov 08 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php GUID生成函数和类
Mar 10 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
PHP构造二叉树算法示例
Jun 21 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
PHP开发实现快递查询功能详解
Apr 08 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
模板引擎正则表达式调试小技巧
2011/07/20 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
Python的历史与优缺点整理
2020/05/26 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
《学会待客》教学反思
2014/02/22 职场文书
一岗双责责任书
2014/04/15 职场文书
白酒代理协议书范本
2014/10/26 职场文书
军训个人总结
2015/03/03 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL