[英]Laravel Spark - redirect on login
我有一個非常簡單的問題。 我只想在用戶登錄后將其指向“/ 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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.