私はアプリケーションを開発しましたが、今まで、特定の画面のメニューオプションやボタンを表示/非表示にしないことで、画面へのアクセスを制限することに成功しています。しかし、現在の問題は、ユーザーがアドレスバーに url を入力したときに画面にアクセスできることです。
私はこれを行う最初の人ではないことを知っているので、ある種の標準的な慣行が必要です. 誰かがライブラリまたはこれを行う方法を知っている場合は、私に知らせてください。
ありがとうございました。
免責事項-私はこれを使用したことがないので、これがClojureにどのように変換されるかわかりません。
通常、ビューに応答するメソッドを承認ハンドラーで装飾します。このハンドラーは、認証バックエンドと通信する方法を知っています。現在のコンテキストからユーザー識別子(ユーザーID /ユーザー名など)を取得し、要求されたビューに対するユーザーの承認をバックエンドに照会します。
合格すると、ビューが表示されます。
拒否された場合は、ビジネスルール(およびセキュリティガイドライン)に基づいてアクションが実行されます。これらは、友好的な「おっと、ここでは許可されていません」のように単純な場合があります。アクションをログに記録してから、ユーザーのセッションを終了します。
アプリケーションのエンドポイント(URL)のセットが限られている場合は、ユーザーへのエンドポイントの静的マップを作成し、これをアクセス制御リスト(ACL)として使用できます。ただし、最近のほとんどのアプリケーションでは、ACLはさまざまなオブジェクトにわたって制御されます。エンドポイント(URL)は動的であるため、制限されません。たとえば、、/inventory/product/1
など/user/admin/3
。
アップデート:
このリンクは、デコレータパターンの視覚的な図を提供します。
アップデート2:
承認ライブラリは、承認チェックを行うヘルパーを提供します(「このユーザーは表示を許可されていますか」)が、コードでの実装は個々のアプリケーションに任されています。
通常、1つ以上の認証ライブラリ(宣誓など)を使用します。ただし、承認部分は実装に任されています。
簡単なグーグルで、より関連性の高いサンドバーを使用してclojureWebアプリケーションを保護することができました。