繁体   English   中英

Laravel Spark - 登录时重定向

[英]Laravel Spark - redirect on login

我有一个非常简单的问题。 我只想在用户登录后将其指向“/ home”以外的其他地方。 如果您可以更改spark软件并在每个部署中保留这些更改,这并不困难。 但是,当部署内容时,作曲家会重新安装所有内容,而对核心供应商软件进行更改通常是不好的做法。

对于创作者来说,这似乎应该是一个非常基本和简单的事情。 那么,我该怎么做?

我努力了 ...

改变我的应用程序中的auth控制器和密码控制器中的redirectTo和redirectPath变量。

将登录控制器添加到我的应用程序 - 独立于spark - 然后重置相同的变量。

尝试在Spark服务提供程序中调用afterLoginRedirectTo和afterAuthRedirectTo函数。 这返回了一个错误,表明函数不存在。

不知道从哪里开始。

在遇到同样的问题之后我已经做了一些挖掘并找到了一种设置除了家之外的东西的方法,我已经改变了一些东西,但希望这也适合你!

TLDR

Spark::afterLoginRedirectTo('somenewplace');

选项1

使用的变量是: $afterLoginRedirectTo from vendor \\ laravel \\ spark \\ src \\ Configuration \\ ManagesAppOptions.php

您可以在SparkServiceProvider @ boot方法中设置它:

Spark::afterLoginRedirectTo('somenewplace');

Spark有自己的LoginController \\ vendor \\ laravel \\ spark \\ src \\ Http \\ Controllers \\ Auth \\ LoginController.php

它有一个经过身份验证的方法来处理双因素身份验证设置:

 if (Spark::usesTwoFactorAuth() && $user->uses_two_factor_auth) {
        return $this->redirectForTwoFactorAuth($request, $user);
    }

    return redirect()->intended($this->redirectPath());

RedirectPath()来自仍在供应商中的RedirectsUsers特征,并执行以下操作:

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

LoginController中的redirectTo在构造方法中设置:

$this->redirectTo = Spark::afterLoginRedirect();

选项2

创建一个新路由以覆盖登录功能。

在web.php中指定一个新的登录后路由:

Route::post('/login', 'Auth\NewLoginController@login');

然后,您可以扩展LoginController并覆盖经过身份验证的方法:

 class LoginController extends \Laravel\Spark\Http\Controllers\Auth\LoginController
 {
   public function authenticated(Request $request, $user)
   {
    /**
     * @var $user User
     * Set some logic here of your own for new redirect location
     */
    if ($user->last_page_accessed != null) {
      $this->redirectTo = $user->last_page_accessed;
    }
    return parent::authenticated($request, $user);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM