2017-06-14 17 views
1

私は個別にホストされている別のホストである別のバックエンドのapi railsアプリケーションにリクエストを送信するruby on railsを使ってウェブサイトを構築しています。明らかに私はトークンベースのoauth認証でバックエンドAPIをセットアップしました。トークンベースの認証でウェブページを保護する方法は?

私はセッションを処理していないので、ステートレスであるため、フロントエンドWebアプリケーションの特定のビューページにユーザーがアクセスできないようにするにはどうすればよいですか?たとえば、私は消費者/予約ページを持っています。私はユーザーがログインしていなくてもこのページにアクセスするのを望んでいませんが、誰でもただちにURLを入力して、今すぐ必要なページを開くことができます。

ユーザーログイン(.js.erbファイルからのajax呼び出し)で、トークンを取得し、将来のすべての要求のために変数をlocalStorageに格納してください。私は、このトークンを何らかの形で使用して、制限さしかし、私はちょうど方法を知らない。

+0

私は試したことがありませんが、APIの認証に関するこの[GoRailsビデオ](https://gorails.com/episodes/api-auth-with-json-web-tokens-and-knock)をご確認くださいJWT。 – matiss

+0

私はドアキーパンの宝石を使ってオアフ – Chet

答えて

1

今、あなたはlocalStoragetokenを保存してきたように、あなたがアクセスを制限し、ユーザーがページにアクセスしたりしないように許可されているかどうかを確認したいページへの要求にこのトークンを渡す必要があります。

0

TL; DR:これには標準的な方法またはライブラリはありません。そのような機能を実装する必要があります。

私はリアクションのようなフロントエンドフレームワークを使用していると仮定しています。存在する場合、localStorageに有効なトークンが存在しない場合、現在のビューを変更する要求はすべて終了する必要があります。 Reactの条件付きレンダリングに関してはthis postをチェックしてください。あなたが何か他のものを使用しているなら、方法論はまだほとんど同じです。

それ以外の場合は、有効なトークンがあるかどうかをチェックするすべてのページの先頭に小さなスクリプトを作成し、そうでない場合は、window.history.back()を呼び出して前のページに戻します。

(サーバー上の静的なHTMLファイルへのすべての呼び出しを傍受し、トークンがあるかどうかを確認し、存在する場合はファイルを送信する方法もあります。そうでない場合は、カスタムエラーページなどを送信できます) 。

関連する問題