2010-07-30 95 views
3

如何在發送請求之前執行jQuery Ajax調用並對該調用進行身份驗證?jquery身份驗證

我還未登錄,所以必須進行身份驗證。任何人只要進行身份驗證都可以訪問安全問題。它只是基本的http身份驗證,你可以看看API http://lighthouseapp.com/api/the-basics

+1

網站/ api使用什麼樣的身份驗證? – tvanfosson 2010-07-30 13:58:24

+0

我不明白「安全不是問題」和「只需要驗證」在同一句話中是有意義的。如果你需要認證,那麼有一些身份驗證正在進行。如果重要的是一個人不能僞裝成另一個人,那麼安全性*是重要的。 – Pointy 2010-07-30 14:33:32

回答

0

由於您沒有指定您使用的是何種身份驗證,因此我將假設您有某種登錄頁面/操作可以發佈用戶名和密碼到,使用那些作爲參數名稱。如果您有其他字段 - 比如隱藏字段以防止跨站點請求僞造,則還需要包含這些字段。我也會假設你知道你還沒有被認證。有辦法檢測到這一點,但我不打算覆蓋它們。我會進一步假設您發佈到網站的操作,而不是一些需要單獨的身份驗證類型的API。

您要做的第一件事是用正確的用戶名/密碼組合生成一個POST(我假設)登錄操作。你如何得到這些取決於你。這將通過網站對您進行身份驗證,併爲您的瀏覽器提供適當的身份驗證Cookie,以便隨後發送請求。

您需要檢測並處理認證失敗。如果您的登錄操作了解它可能通過AJAX調用(使用HTTP_X_REQUESTED_WITH標頭是一個不錯的選擇),那麼它可以返回帶有狀態設置的JSON,否則您將需要刮取返回的HTML來弄清楚。

一旦您擁有身份驗證Cookie,您應該可以在沒有任何特殊處理的情況下製作實際的AJAX請求。

1

如果你的網站上的用戶已經通過身份驗證,在大多數情況下,你不需要做任何事情 - 身份驗證cookie將與您的AJAX呼叫一起發送。否則,您可以嘗試HTTP Basic驗證。

1

如果您試圖讓JavaScript在沒有任何用戶交互的情況下進行身份驗證,請不要。

將您的身份驗證邏輯硬編碼爲客戶端可用的代碼可能會嚴重影響API的安全性。如果你打算把用戶名/密碼放到你的javascript中,爲什麼還要使用它呢?

如果您有權訪問該API並且可以重新進行身份驗證,則可以嘗試使用令牌系統進行身份驗證。只是我的$ .02