2012-01-10 260 views
7

我有一個廣泛依賴會話的PHP應用程序。我們正在考慮爲我們的用戶構建一個API。我們最初的想法是,用戶需要使用他們的電子郵件地址,密碼和API密鑰(每個用戶都是唯一的)對api進行身份驗證。但是,由於當前的應用程序(包括模型)廣泛依賴於用戶會話,所以我不確定最佳方法。PHP API身份驗證和會話

假設的API請求被正確地驗證,這是可以接受的:

  • 開始,一旦用戶通過驗證
  • 運行模式和JSON/XML返回給用戶的API呼叫會話
  • 終止該會話

這意味着,本次會議被實例化每個API調用,然後立即刷新。這個可以嗎?或者我們是否應該考慮其他選擇?

+0

你是對的,API應該是無狀態的,如果可能的話,不要使用會話/ cookies。但是,這可以輕鬆完成,沒有問題。但是,您應該重新使用現有的身份驗證框架,因爲它非常複雜。例如,看一下https://github.com/delight-im/PHP-Auth,它既是框架不可知的,也是與數據庫無關的。然後在每個請求和服務器上發送證書(1)登錄,(2)完成實際工作,最後(3)再次註銷。 – caw 2016-10-21 21:26:10

回答

1

根據我創建API的經驗,我發現最好的方式是會話只持續一個請求,並在每個執行週期中重新創建會話信息。

如果您的會話實例化非常明顯,這顯然會引入開銷,但是如果您只是針對數據庫檢查憑據,則應該是可以的。另外,根據用戶標識符,您應該能夠緩存任何類似APC或memcache的繁重工作,而不是會話,從而減少重新創建會話所需的工作,同時確保在每個請求中驗證身份驗證。