问题
I am building a Laravel 8 application and have successfully implemented authentication. Now I want to check if a user's status is active before logging him in. I have added a field in the users table
username varchar
password varchar
....
status tinyint(1)
...
I am using JetStream and Fortify
Thank You
回答1:
You can customize user authentication from app\Providers\JetStreamServiceProvider.php
, on boot
method :
use App\Models\User;
use Illuminate\Http\Request;
use Laravel\Fortify\Fortify;
public function boot()
{
$this->configurePermissions();
Jetstream::createTeamsUsing(CreateTeam::class);
Jetstream::updateTeamNamesUsing(UpdateTeamName::class);
Jetstream::addTeamMembersUsing(AddTeamMember::class);
Jetstream::deleteTeamsUsing(DeleteTeam::class);
Jetstream::deleteUsersUsing(DeleteUser::class);
// Below code is for your customization
Fortify::authenticateUsing(function (Request $request) {
$user = User::where('email', $request->email)->first();
if ($user->status == 1) { // it will return if status == 1
return $user;
}
});
}
See the official Jetstream
documentation of Customizing User Authentication
来源:https://stackoverflow.com/questions/64835186/how-do-i-authenticate-a-user-in-laravel-8-jetstream-only-if-his-status-is-active