我创建了一个项目来模拟登录我公司的网站。并将其放入我的服务器中以供其他人使用。
但公司网站有限制,单个ip只能打开2个会话。
因此,当我的同事超过2个登录我的项目时,第三个人无法登录。
有没有办法限制访问权限,所以当有2个用户正在使用时,第三个用户无法登录。
我应该使用全局变量来存储大量当前用户吗?
答案 0 :(得分:0)
您可以将IP地址,用户ID或登录以及上次登录到您的应用程序的数据保存到数据库中,并在某些用户登录时进行检查。
如果用户登录,则将他/她的IP地址,ID /登录以及上次登录到应用程序的表存储到表中。如果尝试从同一个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