Laravel 5.2在设置受保护的redirectPath时使用命名路由

时间:2016-01-02 06:15:51

标签: php routes laravel-5.2

我希望在登录到包含网址/dashboard/start

的网页后重定向

我的routes.php包含以下路线:

Route::get('/dashboard/start', ['uses' => 'Settings\OrganisationController@index', 'as' => 'app.home']);

在Laravel Auth过程中,您可以通过在app\Http\Controllers\Auth\AuthController控制器的开头添加声明来实现登录重定向覆盖,如下所示:

protected $redirectPath = '/dashboard/start';

我想在整个代码中使用命名路由,这样如果我更改路由文件中的url,只要名称没有更改,它就不会影响代码。

我试过这个但是失败了:

protected $redirectPath = route('app.home');

我找不到一个例子,也没有提到这一点。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您有几个选择。您可以覆盖控制器上的redirectPath方法。

protected $redirectPath = 'app.home';

public function redirectPath()
{
    return route($this->redirectPath);
}

您还可以制作authenticated方法。 handleUserWasAuthenticated方法(在Auth::attempt成功时调用)检查authenticated方法是否存在,如果存在,它将调用它并返回结果而不是正常{{1} }}。此方法将接收当前请求和authed用户。

redirect()->intended($this->redirectPath())如何调用handleUserWasAuthenticated

authenticated

答案 1 :(得分:-1)

您可以通过多种方式重定向。你可以通过路线重定向。 写你的routes.php

Route::get('first-route',['uses'=>'TestController@first','as'=>'first']);
Route::get('second-route',['as'=>'second','uses'=>'TestController@second']);

并编写控制器

public function first(){
        return "This is a simple Test Controller";
    }
    public function second(){
        return redirect()->route('first');
    }

你可以使用像这样的动作方法

public function second(){
        return redirect()->action('TestController@first');
    }

 public function second(){
       $url=action('TestController@first');
        return redirect($url);
    }