我已經使用Laravel身份驗證(快速入門)。但我需要檢查用戶的狀態(已批准/正在審批)。如果沒有獲得批准,則會在登錄頁面中顯示錯誤。我需要知道我必須在哪個文件中進行更改以及更改。目前我正在致力於Laravel 5.3。如何在laravel 5.3中登錄時檢查用戶狀態?
3
A
回答
6
您可以創建Laravel Middleware檢查鏈接以獲取更多信息
php artisan make:middleware CheckStatus
修改您的中間件獲得
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class CheckStatus
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
//If the status is not approved redirect to login
if(Auth::check() && Auth::user()->status_field != 'approved'){
Auth::logout();
return redirect('/login')->with('erro_login', 'Your error text');
}
return $response;
}
}
那麼你的中間件添加到您的Kernel.php
'checkstatus' => \App\Http\Middleware\CheckStatus::class,
最後中間件添加到您的路線
Route::post('/login', [
'uses' => 'Auth\[email protected]',
'middleware' => 'checkstatus',
]);
希望它有幫助
0
按照以下步驟...
首先在用戶表(假設is_approved)
在app/HTTP /控制器/認證/ LoginController中文件
public function authenticate()
{
if (Auth::attempt(['email' => $email, 'password' => $password, 'is_approved'=>1])) {
// Authentication passed...
return redirect()->intended('dashboard');
}
}
希望這會增加一列將幫助
1
上的答案爲我節省了
if (Auth::attempt(['email'=>$input['email'],'password'=>$input['password'], 'user_status'=>1 ]))
這將檢查狀態
+0
@ saad,哪個文件添加這段代碼 –
0
我不上答案達成一致,這將導致你的應用程序的性能是非常低的,也不建議修改Laravel的源代碼。
所以,你可以重寫getCredentials功能,以您的應用程序\ HTTP \ \控制器驗證\ AuthController.php文件是這樣的:
<?php
//app\Http\Controllers\Auth\AuthController.php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
//you need add this function
protected function getCredentials(Request $request)
{
$data = $request->only($this->loginUsername(), 'password');
$data['is_approved'] = 1;
return $data;
}
}
,那麼你可以直接使用Laravel認證(快速啓動)。
希望這會有所幫助。
相關問題
- 1. 如何在登錄wordpress時檢查用戶狀態
- 2. 登錄之前檢查用戶狀態
- 3. 在客戶端檢查登錄狀態
- 4. 如何檢查Facebook中所有用戶的登錄狀態?
- 5. 如何在laravel中驗證登錄5.3
- 6. 如何在laravel 5中更新用戶登錄狀態欄?
- 7. Twitter登錄狀態檢查
- 8. 如何製作用戶的登錄狀態檢查器?
- 9. 如何檢查其他網站的用戶登錄狀態
- 10. 網站如何檢查用戶登錄狀態?
- 11. 如何從web2py中查看動態檢查登錄狀態
- 12. Laravel 5檢查用戶是否登錄
- 13. 檢查用戶是否登錄laravel 4
- 14. 如何使用「用戶」以外的表登錄Laravel 5.3?
- 15. 根據用戶的角色和狀態在laravel中登錄
- 16. 登錄用戶狀態
- 17. 如何檢查laravel中的ajax狀態
- 18. 如何在用戶在django上登錄後檢查每個頁面的狀態
- 19. 如何檢查當前登錄的用戶和登錄時間
- 20. 在Laravel 5.3中登錄問題
- 21. 如何登錄wordpress時登錄laravel中的相同用戶?
- 22. Facebook登錄狀態檢查問題
- 23. 如何在使用offline_access時檢索登錄狀態
- 24. 反覆檢查用戶的登錄狀態?
- 25. 如何在Laravel 5.3中使用用戶名登錄而不是電子郵件?
- 26. 檢查會員狀態和登錄
- 27. 如何在登錄時獲取當前用戶狀態和狀態? SMACK XMPP
- 28. Facebook身份驗證:用戶檢查「保持登錄狀態」
- 29. ASP登錄控制 - 正在檢查登錄狀態
- 30. 保持登錄狀態用戶信息
如何在我的路由中添加中間件,因爲web.php中沒有這樣的路由? – Zaman
@Efaz檢查[this](https://laracasts.com/discuss/channels/general-discussion/how-to-name-laravel-52-auth-routes)覆蓋你的'Auth :: routes();' –
這不適用於5.3。*請 –