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