登录后我无法重定向到网址。 情况是有人访问博客帖子,需要在添加评论之前登录。因此,用户单击登录链接并登录“auth / login”,并始终重定向到“/ home”。
当网址设置为“auth / login?redirect = url / to / blogpost”
时,我希望将用户重定向到博客帖子我有以下中间件:
应用\ HTTP \中间件\ RedirectIfAuthenticated
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class RedirectIfAuthenticated
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->check()) {
return redirect('/home');
}
return $next($request);
}
}
应用\ HTTP \中间件\身份验证
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Authenticate
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return response('Unauthorized.', 401);
} else {
return redirect()->guest('auth/login');
}
}
return $next($request);
}
}
答案 0 :(得分:1)
为什么不在重定向器上使用预期的方法?请阅读docs
中的相关内容重定向器上的预期方法会将用户重定向到他们在被身份验证过滤器捕获之前尝试访问的URL。如果目标目的地不可用,则可以为此方法提供回退URI。
答案 1 :(得分:0)
如果您使用的是Laravel 5中的标准身份验证,请找到app/Http/Controllers/Auth/AuthController.php
文件并将$redirectPath
更改为:
protected $redirectPath = '/url/to/blogpost';
答案 2 :(得分:0)
我决定将特性AuthenticatesUsers的 getLogin 函数复制并粘贴到我的AuthController中。我覆盖了函数并按原样保留了特征。
我刚刚添加了
\Session::put('url.intended',\URL::previous());