如何在Laravel 4中限制每个用户帐户的同时会话数

时间:2014-03-01 13:58:40

标签: php session laravel laravel-4

我正在开发一个基于订阅的项目,并且帐户需要每个用户限制为2个并发会话

我有一些想法,但我不完全确定如何做到这一点,也许有一些内置的方式来做这个,我不知道。

欢迎任何建议。

我在想如果我将会话驱动程序切换到数据库然后扩展Auth或Session驱动程序以在会话表中存储一些额外的信息,比如用户ID,这会有点容易要做。

不完全确定如何做到这一点,所以任何帮助都将非常感谢!

2 个答案:

答案 0 :(得分:1)

我想你在谈论来自不同IP /设备的多重登录?这就是我现在想的。你不能计算“浏览器标签”或类似的东西......

因此,如果您的情况如此,那么您的解决方案就很容易了。将任何用户登录绑定在数据库或其他持久性中的活动记录上。

DB-型号:

userSession (
    'id', // primary key
    'userId', //foreign key
    'sid', //unique session id
    'ip', //unique user id or uniqure device (I preffer IP!)
    'login', //datetime
    'lastClick' //datetime
);

如果存在该用户的db中的活动记录,则会打开活动会话。您需要检查任何用户操作的给定db用户记录(我认为是HTTP-Request)。您现在可以为一个用户计算活动用户会话。您现在也可以通过删除依赖的userSession记录来启动用户。

答案 1 :(得分:0)

这可以通过sql在表中使用UPDATE并将列设置为活动会话并且php检查会话是否超过2,如果它们拒绝登录,或者以其他方式实现。

<?php
function checkSessions(){
mysql_connect(data);
$q = "SELECT * FROM users WHERE username=$username && password=$password";
 while($row = mysql_fetch_array($q)){
 if($row["Active Sessions"] >2){
 die("There are too many people using the account right now");
}

你明白这是一个样本。