2017-06-14 94 views
1

我正在建立一個網站使用紅寶石的軌道上分開託管,這使得請求到另一個後端api軌道應用程序,這是再次託管分開。很明顯,我已經設置了基於令牌的oauth認證的後端api。如何使用基於令牌的身份驗證來保護網頁?

現在,因爲我不處理會話,它是無狀態所有,我怎樣才能阻止用戶訪問我的前端Web應用程序中的某些查看頁面?例如,我有一個消費者/預訂頁面。我不希望用戶在未登錄的情況下訪問此頁面。但是,任何人都可以立即輸入網址並打開他們想要的任何頁面。

在用戶登錄(來自.js.erb文件的ajax調用)時,獲取令牌並將其存儲在localStorage變量中,以便將來每次向api發送請求。我知道我應該以某種方式使用此令牌來阻止用戶訪問受限制的頁面。但我只是不知道如何。

+0

我還沒有嘗試過,但是我認爲你在API驗證上檢查了這個[GoRails視頻](https://gorails.com/episodes/api-auth-with-json-web-tokens-and-knock)智威湯遜。 – matiss

+0

即時通訊使用守門人寶石oauth – Chet

回答

1

現在,你已經存儲了tokenlocalStorage你就需要通過此令牌與要求要限制訪問,並檢查用戶是否有權訪問該頁面或不是頁面。

0

TL; DR:對此沒有標準方法或庫;您必須實施您認爲合適的功能。

我假設你正在使用某種類似前端框架的反應;如果是這樣,那麼如果localStorage中沒有有效的標記,那麼任何更改當前視圖的請求應該被終止。查看有關React中的條件呈現的this post;如果你正在使用別的東西,這個方法仍然幾乎相同。否則,我會構建一個小腳本,以在每個頁面的開始部分包含檢查是否存在有效令牌,如果沒有,請調用window.history.back()將用戶返回到上一頁。 (另一種方法是攔截服務器上靜態HTML文件的每一個調用,檢查是否有令牌,如果有的話發送文件,否則,你可以發送自定義錯誤頁面或其他) 。

相關問題