我有一个非常简单的问题.我只想在用户登录后将其指向"/ home"以外的其他地方.如果您可以更改spark软件并在每个部署中保留这些更改,这并不困难.但是,当部署内容时,作曲家会重新安装所有内容,而对核心供应商软件进行更改通常是不好的做法.
对于创作者来说,这似乎应该是一个非常基本和简单的事情.那么,我该怎么做?
我试过了 ...
改变我的应用程序中的auth控制器和密码控制器中的redirectTo和redirectPath变量.
将登录控制器添加到我的应用程序 - 独立于spark - 然后重置相同的变量.
尝试在Spark服务提供程序中调用afterLoginRedirectTo和afterAuthRedirectTo函数.这返回了一个错误,表明函数不存在.
不知道从哪里开始.
在遇到同样的问题之后我已经做了一些挖掘并找到了一种设置除了家之外的东西的方法,我已经改变了一些东西,但希望这也适合你!
Spark::afterLoginRedirectTo('somenewplace');
使用的变量是:$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();
创建一个新路由以覆盖登录功能.
在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); } }