php laravel防止用户在给定时间从不同设备/浏览器选项卡多次登录
laravel是否提供了一种方法来防止用户在给定时间从不同的设备/浏览器多次登录?如果是,则如何强制用户在同一时间从单个设备登录。我正在使用laravel 5.6开发一个在线测验应用程序,用户可以从一个地方登录并参加考试。也许这应该让您开始: 在users\u table.php中添加一列php laravel防止用户在给定时间从不同设备/浏览器选项卡多次登录,laravel,authentication,laravel-5,login,Laravel,Authentication,Laravel 5,Login,laravel是否提供了一种方法来防止用户在给定时间从不同的设备/浏览器多次登录?如果是,则如何强制用户在同一时间从单个设备登录。我正在使用laravel 5.6开发一个在线测验应用程序,用户可以从一个地方登录并参加考试。也许这应该让您开始: 在users\u table.php中添加一列 $table->boolean('is_logged_in')->default(false); public function postLogin() { // your validat
$table->boolean('is_logged_in')->default(false);
public function postLogin()
{
// your validation
// authentication check
// if authenticated, update the is_logged_in attribute to true in users table
auth()->user()->update(['is_logged_in' => true]);
// redirect...
}
public function index()
{
if (auth()->check() && auth()->user()->is_logged_in == true) {
// your error logic or redirect
}
return view('path.to.login');
}
public function logout()
{
auth()->user()->update(['is_logged_in' => false]);
auth()->logout();
// redirect to login page...
}
用户登录时:LoginController.php
$table->boolean('is_logged_in')->default(false);
public function postLogin()
{
// your validation
// authentication check
// if authenticated, update the is_logged_in attribute to true in users table
auth()->user()->update(['is_logged_in' => true]);
// redirect...
}
public function index()
{
if (auth()->check() && auth()->user()->is_logged_in == true) {
// your error logic or redirect
}
return view('path.to.login');
}
public function logout()
{
auth()->user()->update(['is_logged_in' => false]);
auth()->logout();
// redirect to login page...
}
现在,每当用户尝试从另一个浏览器或设备登录时,它都应该检查该用户是否已经登录。因此,再次在LoginController.php中
$table->boolean('is_logged_in')->default(false);
public function postLogin()
{
// your validation
// authentication check
// if authenticated, update the is_logged_in attribute to true in users table
auth()->user()->update(['is_logged_in' => true]);
// redirect...
}
public function index()
{
if (auth()->check() && auth()->user()->is_logged_in == true) {
// your error logic or redirect
}
return view('path.to.login');
}
public function logout()
{
auth()->user()->update(['is_logged_in' => false]);
auth()->logout();
// redirect to login page...
}
用户注销时:LogoutController.php
$table->boolean('is_logged_in')->default(false);
public function postLogin()
{
// your validation
// authentication check
// if authenticated, update the is_logged_in attribute to true in users table
auth()->user()->update(['is_logged_in' => true]);
// redirect...
}
public function index()
{
if (auth()->check() && auth()->user()->is_logged_in == true) {
// your error logic or redirect
}
return view('path.to.login');
}
public function logout()
{
auth()->user()->update(['is_logged_in' => false]);
auth()->logout();
// redirect to login page...
}
laravel提供了这种方法,可以使其他设备上活动的用户会话无效并“注销”
logoutOtherDevices()
要使用此方法,还需要确保
Illuminate\Session\Middleware\AuthenticateSession
中间件在您的app/Http/Kernel.php
class'web中间件组中存在且未发表评论:
'web' => [
// ...
\Illuminate\Session\Middleware\AuthenticateSession::class,
// ...
],
那么你可以这样使用它
use Illuminate\Support\Facades\Auth;
Auth::logoutOtherDevices($password);
没有这种类型的功能,但您可以使用数据库完成这种类型的工作。