gpt4 book ai didi

php - Laravel 身份验证在 Laravel 5.3 中无法正常工作

转载 作者:行者123 更新时间:2023-11-28 23:21:38 26 4
gpt4 key购买 nike

我被困在我的项目中。我希望用户可以使用电子邮件或手机号码登录。这工作得很好。但现在我希望只有活跃用户才能使用电子邮件或手机号码登录。我的数据库中有一个事件字段,如果用户处于事件状态,则该字段设置为 1,如果用户不活动,则设置为 0。但不知道如何执行此操作。请大家帮我解决这个问题。我正在使用 Laravel 5.3。

我的 LoginController 代码是

<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
protected $username = 'email';
public function loginNameOrEmail(Request $request)
{
$field = filter_var($request->input('email'), FILTER_VALIDATE_EMAIL) ? 'email' : 'mobile';
$request->merge([$field => $request->input('email')]);
$this->username = $field;
return $this->login($request);
}
public function username()
{
return $this->username;
}
protected function authenticated($request, $user)
{
if($user->is_admin == 1) {
return redirect()->intended('dashboard');
}
return redirect()->intended('/home');
}
}

最佳答案

除了用户的电子邮件和密码之外,您还可以向身份验证查询添加额外的条件。例如,我们可以验证用户是否被标记为“活跃”:

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
// The user is active, not suspended, and exists.
}

更新

最简单的方法是重写 credentials 方法:

protected function credentials(Request $request) {

$request['active'] = 1;
return $request->only($this->username(), 'password', 'active');
}

在您的 LoginController 中添加此方法。

Docs

关于php - Laravel 身份验证在 Laravel 5.3 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com