当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel实现Auth认证,登录、注册后的页面回跳方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-25 16:10:15 浏览: 评论:0 

今天小编就为大家分享一篇laravel实现Auth认证,登录、注册后的页面回跳方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

laravel自带的 auth 认证中间件 - app/Http/Middleware/Authenticate.php

查看源码:

  1. if (Auth::guard($guard)->guest()) { 
  2.  if ($request->ajax() || $request->wantsJson()) { 
  3.   return response('Unauthorized.', 401); 
  4.  } else { 
  5.   return redirect()->guest($guard.'/login'); 
  6.  } 

里面,对于检测到用户未登录,重定向到登录页面,使用了 'redirect()->guest()' 的方法!

可查看guest()源码:

  1. public function guest($path$status = 302, $headers = [], $secure = null) 
  2.  $this->session->put('url.intended'$this->generator->full()); // 设置回跳地址 
  3.  
  4.  return $this->to($path$status$headers$secure); 

做了2件事:

1.给session中,设置了当前访问的url链接!(用于我们登录成功后,回跳回来!)

2.跳转到,我们指定的登录页面

接着,自带的auth机制中,看看它的登录成功后的操作:

  1. protected function handleUserWasAuthenticated(Request $request$throttles
  2.  if ($throttles) { 
  3.   $this->clearLoginAttempts($request); 
  4.  } 
  5.  
  6.  if (method_exists($this'authenticated')) { 
  7.   return $this->authenticated($request, Auth::guard($this->getGuard())->user()); 
  8.  } 
  9.  
  10.  return redirect()->intended($this->redirectPath()); // 获取回跳地址 

获取到之前的 '回跳地址',跳转!

这里,我想说明的一点是:

我们有时间觉得laravel很不好用,主要是我们对它内部的东西,并不熟悉。就拿今天说的这个auth认证。不用laravel默认的登录注册可以,但仍需要借助它的Auth系列方法!因为很方便。包括这些 redirect() 的方法等。

今天记录下,这个问题,怕过段时间又忘记了。登录、注册,借助redirect()的 guest() 和 intended(),免去了我们自己借助session或cookie,来记录页面的回跳地址,人家已经集成了,还很优美,为什么不用!

Tags: laravel认证 Auth认证

分享到: