簡體   English   中英

如何自動讓API密鑰過期?

[英]How can I automatically let API keys expire?

我正在構建一個在會話期間使用API​​密鑰的應用程序。 到目前為止,我已經成功生成了API密鑰,我可以檢查它們的有效性以及它們是否使用了正確的帳戶,並且我還添加了強力保護。

我的問題是我希望自動讓它們在24小時后過期。 現在,當用戶請求新密鑰時,我會刪除舊密鑰以減少某人猜測正確密鑰的可能性,但這對於不再使用該應用程序的用戶不起作用。

我打算通過安排一個cronjob來實現這一點,因為我讀了其他人的建議。 但是,應用程序將托管的服務器不是我的,並且服務器實際上屬於的人在第一時間看不到自動到期的需要。 這意味着我想以某種方式將它包含在代碼本身中,或者為什么他應該讓我(或自己做)安排一個cronjob有一個很好的推理。

包含API密鑰的表格如下所示:

class DBAuth(db.Model):
    __tablename__ = 'auth'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, index=True)
    api_key = db.Column(db.String(256))
    begin_date = db.Column(db.DateTime, nullable=False)

api密鑰生成器的調用如下:

auth = DBAuth()
key = DBAuth.query.filter_by(user_id=user.id).first()
    if key is not None:
        db.session.delete(key)
        db.session.commit()
    api_key = auth.generate_key(user.id)
    db.session.add(auth)
    db.session.commit()

使用這樣的生成器功能:

def generate_key(self, user_id):
    self.user_id = user_id
    self.api_key = #redacted#
    self.begin_date = datetime.datetime.now()
    return self.api_key

我的問題實際上是兩部分:1:我的同事是否正確地表示自動到期是不必要的? 和2:有沒有辦法為代碼添加自動到期而不是安排cronjob?

對不起,我沒有足夠的代表發表評論,一個簡單的方法如下:

由於您的架構中已經有DateTime對象,因此您可以添加另一個包含當前時間加上24小時的"key_expiry_date"項。

然后,您可以使用"key_expiry_date"來驗證更多請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM