我已经使用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。*请 –