如何限制Flask中的访问权限

时间:2017-06-21 09:24:25

标签: python session flask

我创建了一个项目来模拟登录我公司的网站。并将其放入我的服务器中以供其他人使用。

但公司网站有限制,单个ip只能打开2个会话。

因此,当我的同事超过2个登录我的项目时,第三个人无法登录。

有没有办法限制访问权限,所以当有2个用户正在使用时,第三个用户无法登录。

我应该使用全局变量来存储大量当前用户吗?

1 个答案:

答案 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