Laravel 5.5 RedirectTo在LoginController中不起作用

时间:2018-02-06 15:39:21

标签: php laravel laravel-5.5

我需要你的帮助。

当用户登录时,我需要指导他们一个多语言路由器,根据我的阅读,我只需在我的LoginController中添加RedirectTo,但这样做没有效果:

class LoginController extends Controller
{
.
.
     //protected $redirectTo ='/Utilisateur';(it's working)
     protected $redirectTo =  route('displayNew');(it isn't working)
.
.
}

信息:事实上,在登录后的Laravel上,用户被重定向到home(默认重定向),要改变这种行为,我们必须给redirectTo变量赋值。处理此变量的函数是:

trait RedirectsUsers{ 
public function redirectPath(){
   if (method_exists($this, 'redirectTo')) {
        return $this->redirectTo();
    }

    return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}
}

3 个答案:

答案 0 :(得分:1)

Class properties必须是"静态"创造价值,即设定值。您不能使用另一个PHP函数在声明中分配值。您可以通过在构造函数中设置值来解决它:

class LoginController extends Controller
{
     protected $redirectTo = '';

     public function __construct() {
         $this->redirectTo = route('displayNew');
     }

}

答案 1 :(得分:0)

如果您已运行php artisan auth

像这样更改RedirectIfAuthenticated中间件

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {

            return route('displayNew');//change the redirect here
        }

        return $next($request);
    }
}

在路由文件中,您可以这样做

Route::get('displayNew', 'MultiLanguageController@index')->name('displayNew');

答案 2 :(得分:0)

如果您需要对用户身份验证后返回的响应进行更强大的自定义,Laravel提供了一个空的authenticated(Request $request, $user)方法,如果需要,可以将其覆盖:

将此方法放入LoginController.php

protected function authenticated(Request $request, $user)
{
        return redirect()->route('displayNew');
}
相关问题