Laravel 5 为每个用户创建一个会话

Laravel 5 为每个用户创建一个会话,laravel-5,Laravel 5,我正在尝试在Laravel5.4中为每个用户创建一个会话。如何在my laravel中配置1个会话用户。这是我的登录控制器 我是说,如果我登录Chrome。我无法登录Mozilla。所以,我先在Chrome或Swap中注销 登录控制器 <?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Auth; use Illuminate\Http\Request; use Vali

我正在尝试在Laravel5.4中为每个用户创建一个会话。如何在my laravel中配置1个会话用户。这是我的登录控制器

我是说,如果我登录Chrome。我无法登录Mozilla。所以,我先在Chrome或Swap中注销

登录控制器

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Auth;
use Illuminate\Http\Request;
use Validator;
use DB;
use App\d_mem;
use Redirect;
use Session;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Adldap;

class LoginController extends Controller
{

    protected $exceptionUsers = ['admin', 'user1', 'user2','bhandoko','ksoleh'];

    public function index()
    {
        return view('auth.login');
    }
    public function welcome()
    {
        return view('welcome');
    }
    // use AuthenticatesUsers;
    public function login(Request $req)
    {

        $user = d_mem::where('m_username',$req->username)->first();

            if ($user && $user->m_password == sha1(md5('لا إله إلاّ الله') . $req->password)) { 
            $response = true;
        }


        if ($response) {
            $usernm = $req->username;
            Auth::login($user);

            $ses = DB::select("SELECT d.m_id,
                                      d.m_name as nama,
                                      d.m_manager,
                                      d.m_lead,
                                      d.m_coordinator,
                                      d.m_specialist,
                                      d.m_email as email,
                                      (SELECT dm.m_name from d_mem dm where  dm.m_id=d.m_manager LIMIT 1) as manager ,
                                      u2.m_name as lead,
                                      u3.m_name as coor,
                                      u7.m_name as spec,
                                      u4.u_name as role,
                                      u5.u_name as unit,
                                      u5.u_id   as unit_id,
                                      u5.u_role as unit_role,
                                      u5.u_flag as unit_flag,
                                      u6.s_id   as site_id,
                                      u6.s_name as site_name 
                    from d_mem d
                    LEFT JOIN d_mem u2 ON u2.m_id=d.m_lead
                    LEFT JOIN d_mem u3 ON u3.m_id=d.m_coordinator
                    LEFT JOIN d_mem u7 ON u7.m_id=d.m_specialist
                    LEFT JOIN d_unit u4 ON u4.u_id=d.m_access
                    LEFT JOIN d_unit u5 ON u5.u_id=d.m_unit
                    LEFT JOIN d_site u6 ON u6.s_id=d.m_site
                    where d.m_username = '$usernm'
                    ");

            // return json_encode($ses);
            Session::put('id',$ses[0]->m_id);
            Session::put('username',$req->username);
            Session::put('name',$ses[0]->nama);
            Session::put('unit',$ses[0]->unit);
            Session::put('unit_id',$ses[0]->unit_id);
            Session::put('unit_role',$ses[0]->unit_role);
            Session::put('unit_flag',$ses[0]->unit_flag);
            Session::put('email',$ses[0]->email);
            Session::put('role',$ses[0]->role);
            Session::put('coor',$ses[0]->coor);
            Session::put('lead',$ses[0]->lead);
            Session::put('spec',$ses[0]->spec);
            Session::put('spec_id',$ses[0]->m_specialist);
            Session::put('coor_id',$ses[0]->m_coordinator);
            Session::put('lead_id',$ses[0]->m_lead);
            Session::put('manager_id',$ses[0]->m_manager);
            Session::put('manager',$ses[0]->manager);
            Session::put('site',$ses[0]->site_id);
            Session::put('site_name',$ses[0]->site_name);

            $data = DB::table('d_mem')->where('m_username',$req->username)->update(['m_lastlogin'=>date('Y-m-d h:i:s')]);

            return redirect(url('/home'));
        }else{
            return Redirect::back()->withErrors(['Wrong Username / Password !']);
        }
    }

    use AuthenticatesUsers;

    public function logout(Request $request)
    {

        Auth::logout();
        $data = DB::table('d_mem')->where('m_username',Session::get('username'))->update(['m_lastlogout'=>date('Y-m-d h:i:s')]);
        $request->session()->regenerate();
       return redirect('/login')->with('info', 'You have successfully logged out');
    }
}

我使用的允许每次登录一个会话的解决方案是,我对会话驱动程序使用
数据库
,在每次登录请求中,我首先从数据库表中删除所有现有的用户会话(使用
user\u id
列),然后为用户创建一个新会话。简而言之,当用户从新设备登录时,他将从所有其他设备注销

要创建
会话
表,请使用以下命令

php artisan会话:表

在您的
login()
方法中,在验证用户身份后添加以下行

DB::table('sessions')->where('user_id',$user->id)->delete()


注意:由于我的应用程序没有太多用户,因此此解决方案适合我,但如果您的应用程序依赖大量用户,我建议使用内存存储,如
memcache
redis
作为会话驱动程序。

您使用什么作为会话驱动程序?数据库、文件或其他什么?我使用的是来自laravel的默认设置驱动程序'=>env('会话驱动程序','文件')