youmixx
@youmixx
PHP Developer

Laravel как разлогинить пользователя при авторизации?

Хочу сделать так, чтобы когда пользователь авторизовался, со всех других устройств его выкинуло.
public function login(Request $request) {    
        // auth()->logout();
        Auth::logout();
        $phone = $request->phone;    
        $user = User::where('phone', $phone)->first();    
        if ($user) {    
            Auth::login($user, true);    
            return redirect()->route('catalog.index');    
        }
        else {    
            return redirect()->back();    
        }    
    }

Сделал это таким образом (файл LoginController), но он не работает. С одного браузера вошел, потом попробовал с другово зайти еще раз и в первом браузере все еще остался авторизован. Как можно это реализовать?
  • Вопрос задан
  • 635 просмотров
Решения вопроса 2
@dsmoke
тебе нужно авторизировать юзера потом:
Auth::logoutOtherDevices('password');

https://laravel.com/api/9.x/Illuminate/Support/Fac...

public function login(Request $request) 
{    
     $phone = $request->phone;  
     $user = User::where('phone', $phone)->first();   

     if ($user) {    
            Auth::login($user, true); 
            Auth::logoutOtherDevices($request->password);

            return redirect()->route('catalog.index');    
     }
     else {    
            return redirect()->back();    
     }    
}
Ответ написан
youmixx
@youmixx Автор вопроса
PHP Developer
LoginController

public function login(Request $request) {    
        $phone = $request->password;  
        $user = User::where('phone', $phone)->first();   

        if ($user) {    
            Auth::login($user, true); 
            Auth::logoutOtherDevices($phone, 'password');
            return redirect()->route('catalog.index');    
        }
        else {    
            return redirect()->back();    
        }      
    }

    public function username() {
        return 'phone';
    }


User.php
protected $fillable = [
        'phone',
        'password',
    ];


RegisterController:
protected function validator(array $data)
    {
        return Validator::make($data, [
            'password' => ['required', 'regex:/((8|\+7)-?)?\(?\d{3,5}\)?-?\d{1}-?\d{1}-?\d{1}-?\d{1}-?\d{1}((-?\d{1})?-?\d{1})?/'],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\Models\User
     */
    protected function create(array $data)
    {
        return User::create([
            'phone' => $data['password'],
            'password' => Hash::make($data['password']),
        ]);
    }


+ в Kernel.php расскоментировал строку:
\Illuminate\Session\Middleware\AuthenticateSession::class,
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы