2016-03-26 222 views
1

我無法登錄後重定向到網址。 情況是有人訪問博客帖子,需要先登錄才能添加評論。因此,用戶點擊登錄鏈接並登錄「auth/login」,並始終重定向到「/ home」。laravel登錄後重定向到網址

我希望用戶被重定向到當URL設置像「身份驗證/登錄重定向= URL /到/博客帖子?」

博客帖子,我有以下中間件:

應用程序\ 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); 
    } 
} 
+1

http://stackoverflow.com/questions/15389833/laravel-redirect-back-to-original-destination-after-login – xdevnull

回答

0

我已經決定要複製和性狀AuthenticatesUsers的getLogin功能貼到我的AuthController。我覆蓋函數並保持特性。

我剛加入

\Session::put('url.intended',\URL::previous());

0

如果您正在使用從Laravel 5標準的認證,找到一個app/Http/Controllers/Auth/AuthController.php文件並更改$redirectPath這樣:

protected $redirectPath = '/url/to/blogpost'; 
1

你爲什麼不使用對重定向預期的方法是什麼?閱讀關於此的docs

重定向器上的預期方法會將用戶重定向到它們在被認證過濾器捕獲之前嘗試訪問的URL。如果預期的目的地不可用,則可以爲此方法提供回退URI。