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 MySQL与分页效率
Jun 04 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
php跨服务器访问方法小结
May 12 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
php实现小程序支付完整版
Oct 09 PHP
php引用传递
Apr 01 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
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
详解Vue方法与事件
2017/03/09 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python脚本获取操作系统版本信息
2016/12/17 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
python excel和yaml文件的读取封装
2021/01/12 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
Delphi工程师笔试题
2013/09/21 面试题
应届大学生自荐信格式
2013/09/21 职场文书
教师实习的自我鉴定
2013/10/26 职场文书
临床医学系毕业生推荐信
2013/11/09 职场文书
物业保安主管岗位职责
2013/12/25 职场文书
工业学校毕业生自荐信范文
2014/01/03 职场文书
活动总结格式范文
2014/04/26 职场文书
品牌服务方案
2014/06/03 职场文书
工程进度款催款函
2015/06/24 职场文书
2016年情人节问候语
2015/11/11 职场文书