Laravel Spark - 登录后重定向

8
我有一个非常简单的问题。我想让用户在登录后跳转到'/home'以外的其他页面。如果您可以更改Spark软件并保留这些更改,那么这不是难事。但是,当部署时,composer会重新安装所有内容,并且对核心供应商软件进行更改通常是不好的做法。
这似乎应该是创建者很容易解决的基本问题。那么,我该怎么做呢?
我尝试过...
- 修改我的应用程序中的认证控制器和密码控制器中的redirectTo和redirectPath变量。 - 在我的应用程序中添加一个独立于spark的登录控制器,然后重置相同的变量。 - 尝试调用Spark服务提供程序中的afterLoginRedirectTo和afterAuthRedirectTo函数。这返回了一个错误,指示函数不存在。
不确定接下来该怎么办。
1个回答

16

在遇到相同问题后,我进行了一些查询,并找到了一种设置非主页的方法。我更改了很多东西,但希望这对你也有用!

TLDR

Spark::afterLoginRedirectTo('somenewplace');

选项1

使用的变量是:$afterLoginRedirectTo,来自vendor\laravel\spark\src\Configuration\ManagesAppOptions.php。

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

Spark::afterLoginRedirectTo('somenewplace');

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

其中有一个authenticated方法来处理双因素身份验证设置:

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

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

RedirectPath()来自于仍在供应商中的RedirectsUsers trait,它执行以下操作:

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

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

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

选项 2

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

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

Route::post('/login', 'Auth\NewLoginController@login');
你可以扩展LoginController并覆盖authenticated方法:
 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);
  }
}

我尝试使用afterLoginRedirect,但是当软件安装时出现错误。调用未定义的方法Laravel\Spark\Spark :: afterLoginRedirectTo()。我不想更改Spark的登录过程,因为这是购买该软件的其中一个原因。 - Joshua Foxworth
4
将Spark::afterLoginRedirectTo('/home');添加到app/Providers/SparkServiceProvider.php的booted()方法中,对我很有效。 - Cotton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接