Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php laravel防止用户在给定时间从不同设备/浏览器选项卡多次登录_Laravel_Authentication_Laravel 5_Login - Fatal编程技术网

php laravel防止用户在给定时间从不同设备/浏览器选项卡多次登录

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

laravel是否提供了一种方法来防止用户在给定时间从不同的设备/浏览器多次登录?如果是,则如何强制用户在同一时间从单个设备登录。我正在使用laravel 5.6开发一个在线测验应用程序,用户可以从一个地方登录并参加考试。

也许这应该让您开始:

users\u table.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...
}
现在,每当用户尝试从另一个浏览器或设备登录时,它都应该检查该用户是否已经登录。因此,再次在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);

没有这种类型的功能,但您可以使用数据库完成这种类型的工作。