网站只能访问某些设备

时间:2015-03-31 14:28:07

标签: php html session web

我有一个Google App Engine PHP网站。我有一个注册系统,因此用户登录并将其保存到数据库中。

我希望能够让用户只能通过2台设备访问。因此,如果他们尝试使用第三台设备登录,则不允许使用第三台设备。因此,例如保存用户设备(IP地址或MAC地址或其他内容),如果用户尝试使用未保存的设备登录或与保存的设备凭据不匹配,则拒绝访问原因。

因此,为了使用户更清楚(用户名i001),手机和笔记本电脑都有。因此,用户可以在使用手机和笔记本电脑但不使用其他设备时登录网站。

有没有办法让这成为可能?

1 个答案:

答案 0 :(得分:1)

我有一个类似的问题,并在Symfony 2中以下列方式处理:

每个用户同时拥有最多登录次数,对于您的情况我们采取2.此外,我还有一个字段,其中包含有多少登录可以免费登录。

所以我们有以下数据库:

maxLogins|loginsFree
2        |2

每次登录时,UserID,会话ID和登录日期时间都将保存到数据库中。在登录过程中,将减少loginsFree列。

所以我们有以下内容:

//After Login
maxLogins|loginsFree
2        |1

逻辑很容易限制登录中的访问

if($freeLogins == 0){
    //give out an message or something
} else {
    //do your login
}

如果用户退出系统,则loginsFree将增加1。

//After Logout
maxLogins|loginsFree
2        |2

重要

您不能在maxLogins值上增加loginsFree值,否则用户可以更频繁地登录,然后同时登录2次。

另外,因为我在会话中解决了这个问题,所以我需要一个在一段时间不活动后会使会话无效的过程。那些失效的会话也必须增加loginsFree值,因为他们带走了登录信息。