2017-06-21 91 views
-1

我創建了一個項目來模擬登錄我公司的網站,並將其放入我的服務器以讓其他人使用。我該如何限制Flask的訪問

但是公司網站有單個ip的限制,只能打開2個會話。

因此,當2個以上的同事登錄我的項目時,第三個無法登錄。

有沒有辦法限制訪問,所以當有2個用戶正在使用,第三個無法登錄。

我應該使用全局變量來存儲一些當前用戶嗎?

回答

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 
+0

我想限制多少用戶登錄,一個用戶沒有多少次login.But數據庫也可以解決.Thanks –

+0

@ Dean.liu然後2個用戶可以在你的公司有相同的IP地址? – Nurjan

+0

是的,這不重要,只是爲了記錄我們的日常工作。但用戶體驗太糟糕了,每天花費我將近15分鐘。所以我想簡化它。我嘗試在我的筆記本電腦上使用chrome隱身登錄登錄不同的用戶,只有2個用戶可以登錄,在我的服務器上這是相同的結果 –