Laravel5.4重新登录实现跳转到登录前页面代码分享

小云云
发布: 2023-03-20 06:10:02
原创
1943 人浏览过

我们有时候会遇到用户登陆后存在过期时间,超时用户需重新登录,本文主要给大家介绍了关于Laravel 5.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(&#39;reurl&#39;) }}"/>
 @endif
登录后复制

登陆(登陆逻辑) 省略了判断用户账户密码,和存储cookie,session的逻辑,最后前端获取url,location.href = 'url',跳转到原url地址。

$reurl = $request->get('reurl');

$url = empty($reurl) ? '/home/index' : $reurl;

return response($url);
登录后复制

注:本文只贴出了实现重新登录的相关代码,实际代码请按照实际业务做对应修改。

相关推荐:

thinkphp还是登陆后跳转到登录前页面的问题

以上是Laravel5.4重新登录实现跳转到登录前页面代码分享的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板