Php mpt成功并在重定向之前:\Auth::logoutOtherDevices(请求(“密码”)
演示Php mpt成功并在重定向之前:\Auth::logoutOtherDevices(请求(“密码”),php,security,authentication,laravel,Php,Security,Authentication,Laravel,演示 以下是您如何实现这一目标的方法。首先,您需要从app/Http/Kernel.php文件中的$middlewareGroups属性中取消注释行\illumb\Session\Middleware\AuthenticateSession::class,因为这是管理Laravel中用户会话的中间件 2-在登录尝试成功之后和重定向之前,在登录函数中添加此行:\Auth::logoutOtherDevices(请求(“密码”) 演示 我猜您是否将“检查会话是否有效”部分放在身份验证筛选器中?谢谢
以下是您如何实现这一目标的方法。首先,您需要从app/Http/Kernel.php文件中的$middlewareGroups属性中取消注释行\illumb\Session\Middleware\AuthenticateSession::class,因为这是管理Laravel中用户会话的中间件 2-在登录尝试成功之后和重定向之前,在登录函数中添加此行:\Auth::logoutOtherDevices(请求(“密码”) 演示
我猜您是否将“检查会话是否有效”部分放在身份验证筛选器中?谢谢,我在Auth驱动程序中弄糊涂了,但这要简单得多。@JosephSzymborski是的。有时候你只需要朝正确的方向推一下。实际上,我创建了一个新类来检查会话是否有效。每次用户访问一组需要登录该类的路由/筛选器时,都会调用。在Laravel 4中,可以通过这种方式获取Laravel会话id。对于Laravel 3($_COOKIE[“Laravel_会话”])和Laravel>=4.1(会话::getId()),还有另一种方法。@AlbinN的积分我使用的是Laravel 3,我把条件放在哪里?在所有控制器中?还是别的地方?请帮忙?@TanvirAlam我从未使用过Laravel3,但你可以将条件放入身份验证过滤器中。(您需要检查每个请求的会话)我猜您是否将“检查会话是否有效”部分放在身份验证筛选器中?谢谢,我在Auth驱动程序中弄糊涂了,但这要简单得多。@JosephSzymborski是的。有时候你只需要朝正确的方向推一下。实际上,我创建了一个新类来检查会话是否有效。每次用户访问一组需要登录该类的路由/筛选器时,都会调用。在Laravel 4中,可以通过这种方式获取Laravel会话id。对于Laravel 3($_COOKIE[“Laravel_会话”])和Laravel>=4.1(会话::getId()),还有另一种方法。@AlbinN的积分我使用的是Laravel 3,我把条件放在哪里?在所有控制器中?还是别的地方?请帮忙?@TanvirAlam我从未使用过Laravel3,但你可以将条件放入身份验证过滤器中。(您需要检查每个请求的会话)
$user->last_session = session_id();
$user->save();
if(session_id() != Auth::user()->last_session){
Auth::logout();
return true;
}
protected $fillable = [
'name', 'email', 'password','last_session'
];
protected function authenticated()
{
// Update last_session after logged-in
User::find(Auth::id())->update(['last_session'=>Session::getId()]);
}
if(Auth::check())
{
// If current session id is not same with last_session column
if(Auth::user()->last_session != Session::getId())
{
// do logout
Auth::logout();
// Redirecto login page
return Redirect::to('login');
}
}
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\SingleSession::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
protected function authenticated()
{
\Auth::logoutOtherDevices(request('password'));
}
\Illuminate\Session\Middleware\AuthenticateSession::class,
php artisan make:middleware CheckSingleSession
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;
public function handle($request, Closure $next)
{
$previous_session = Auth::User()->session_id;
if ($previous_session !== Session::getId()) {
Session::getHandler()->destroy($previous_session);
$request->session()->regenerate();
Auth::user()->session_id = Session::getId();
Auth::user()->save();
}
return $next($request);
}
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('firstName');
$table->string('lastName');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('session_id')->nullable();
$table->rememberToken();
$table->timestamps();
});
'checksinglesession' => \App\Http\Middleware\CheckSingleSession::class,
Route::group(['middleware' => ['auth' ,'checksinglesession'], 'prefix' => 'app'], function () {
Route::get('/dashboard', 'DashboardController@index')->name('dashboard.index');
});
use Illuminate\Support\Facades\Auth;
Auth::logoutOtherDevices($password);
if(Auth::guard('student')->attempt([],$request->rememberme))
{
Auth::guard('student')->logoutOtherDevices(request('password'));
return redirect()->intended('/'); //route('homepage');
}