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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
php跨域cookie共享使用方法
Feb 20 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
PHP中预定义的6种接口介绍
May 12 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
php session_decode函数用法讲解
May 26 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 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变量范围介绍
2012/10/15 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
python查询mysql中文乱码问题
2014/11/09 Python
python实现感知器
2017/12/19 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python调用C语言程序方法解析
2020/07/07 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
爱国卫生月实施方案
2014/02/21 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server