Laravel 5.4重新登录实现跳转到登录前页面的原理和方法

2018-09-07 14:50

阅读:495

  前言

  本文主要给大家介绍的是关于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);

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

  总结

  以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。


评论


亲,登录后才可以留言!