【发布时间】:2017-06-21 09:24:24
【问题描述】:
我创建了一个项目来模拟登录我公司的网站,放在我的服务器上,让别人使用。
但是公司网站有限制,单个ip只能打开2个会话。
所以当我的两个以上同事登录我的项目时,第三个无法登录。
有没有办法限制访问,所以当有2个用户在使用时,第三个无法登录。
我应该使用全局变量来存储当前用户的数量吗?
【问题讨论】:
我创建了一个项目来模拟登录我公司的网站,放在我的服务器上,让别人使用。
但是公司网站有限制,单个ip只能打开2个会话。
所以当我的两个以上同事登录我的项目时,第三个无法登录。
有没有办法限制访问,所以当有2个用户在使用时,第三个无法登录。
我应该使用全局变量来存储当前用户的数量吗?
【问题讨论】:
您可以将IP地址、用户ID或登录名以及上次登录您的应用程序的时间保存到数据库中,并在某些用户登录时进行检查。
如果用户登录,您将他/她的 ip 地址、id/login 和上次登录应用程序的时间存储到表中。如果尝试从同一 IP 地址第三次登录,您将拒绝它。
当用户注销时,您会从数据库中删除记录。
当用户会话自动过期但记录在数据库中时,您需要小心。
为了避免这种情况,您可以将永久会话设置为 True(即使浏览器关闭,会话也不会被破坏)并将其持续时间设置为固定的时间量 - 比如说 48 小时。然后,您可以创建一个将在您的数据库中定期运行的过程,并检查上次登录时间和会话持续时间。如果差异超过 48 小时,则从数据库中删除该记录。
您还应该考虑您的 IP 地址是静态的还是动态的。使用静态 IP 地址应该会容易得多。使用动态 - 这取决于它们更改的频率,但肯定会更复杂。
在用户登录之前,您可以通过这种方式获取他/她的 IP 地址:
from flask import request
@app.route('/login', methods=['GET', 'POST']):
def login():
ip_address = request.remote_addr
# Check the ip_address and how many sessions are bound to it
【讨论】: