問題タブ [deadbolt-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
permissions - デッドボルトでのモデル インスタンス (オブジェクト) の動的アクセス許可
ユーザーが作成したもの (モデルのインスタンス) をデータベースに保存するシステムがあります。ユーザーは、自分の作品を他のユーザーまたはユーザーのグループと共有することを決定できます。
ここでの私の考えは、作品の ID をデッドボルトの許可に関連付け、その許可をサブジェクトに関連付けることです。
これを行う最善の方法は何ですか?この目的のためにデッドボルトを目指すべきですか、それとも実装する他のフレームワーク/パターンがありますか?
scala - Play Framework の Silhouette と Deadbolt 2 の違いは何ですか?
Play フレームワークには、認証と認可のための 2 つの有名なプラグイン、SilhouetteとDeadbolt 2があります。私の質問は、これら 2 つのプラグインの違いは何ですか? また、どのような状況で Silhouette または Deadbolt 2 を使用する必要がありますか?
scala - deadbolt2 と暗黙のリクエスト
Deadbolt2 を Play フレームワーク 2.4 アプリケーションに統合しようとしています。
コントローラーに次のコードがあります
そして、エラーが発生しましmissing parameter type
た。私はデッドボルトの例に従っていますが、これは非常に役立ちますが、暗黙のリクエストをアクションに渡す方法がわかりません。
私のテンプレートは次のように始まります。
Action
せずに直接使用するdeadbolt.SubjectNotPresent()
とうまくいきます。
scala - Play (Web フレームワーク)、Deadbolt (承認)、Slick (データベース アクセス) を統合する方法
簡単に言うと、私のアプリケーションはPlay ウェブ フレームワークバージョン 2.5.1 を使用しています。Deadbolt 認証システムとSlickを使用して、データベース内のユーザー認証情報にアクセスしたいと考えています。これどうやってするの? DeadboltはPlay用に特別に作成されており、Playにはすぐに使用できるSlickが組み込まれているため、非常に簡単ではないにしても可能であるはずです。
Deadbolt ドキュメントの「Integrating Deadbolt」に基づいて、トレイトを拡張しましたDeadboltHandler
。その抽象getSubject()
メソッドは、データベースクエリを実行する場所のようです (ドキュメントにはそう書かれていますが、例はありません)。そのメソッドは、引数として を受け取り、基本的には認証されたユーザー ID と、ロールおよびパーミッション (承認)AuthenticatedRequest
を返します。Subject
Play にはSlick integrationが付属していますが、ドキュメントには Play コントローラー内からの使用方法しか記載されていないため、行き詰まっています。(グローバルルックアップの使用は推奨されておらず、エラーが発生しやすいため、依存性注入を使用してこれを行いたいことに注意してください)
コントローラーでDeadboltを使用して特定のリソースへのアクセスを制限することに成功していますが、Deadbolt が承認の詳細についてデータベース クエリを実行するには、コントローラーが不適切な場所のようです(そうであれば、目的がありDeadboltHandler
ません)。コントローラー コンストラクターの署名定義は次のようになります (コントローラーは、承認データベースではなく、Web コンテンツを格納する既定のデータベースにアクセスすることに注意してください)。
それはうまくいきます。DeadboltHandler
ただし、同様に拡張機能に注釈を付けても、データベースへのSlick@Inject
アクセスを提供できません。
結果は
明らかに、Play@Inject
は注釈が機能するようにコントローラーに対して何か特別なことを行いますが、それについては私には理解できません。new
キーワードではなくインジェクターを使用してコントローラーを構築するという性質上だと思いますが、 Playのソース コードを検索しても、正確に何が起こっているのかを示すことができませんでした。もし私がそれを見つけることができれば、おそらくそのテクニックを模倣してDeadboltHandler
.
play にはGuiceInjectorやGuiceInjectorBuilderなどのクラスが付属しているように見えますが、これらはソリューションの一部であるかのように聞こえますが、私の実験ではまだ方法を示すことができず、特定の用途でそれらを使用する方法に関するドキュメントがある場合拡張機能のコンテキストDeadboldHandler
、私はそれがありません。
この前の質問を見つけました: Scala (Play 2.4.x) How to call a class with @inject() 注釈、これは非常に適切なようです。残念ながら、元の投稿者から 6 件のフォローアップ コメントが寄せられていますが、まだ回答がありません。その質問に対する答えがあれば、この質問に対する答えがあると思いますが、私の質問は非常に具体的です: PlayとDeadboltとSlickを相互に使用する方法 ( Scalaで)。
私を最も困惑させているのは、これがドキュメントで言及されているか、すでに SO で質問されているほど一般的であるべきもののように思われることです。私がそのような参考文献を見つけられなかったということは、通常、私が非常に独特な間違ったことをしていることを意味し、他の誰もそれについて話す機会がありませんでした. それは確かに、私が非常に基本的な何かを見逃していることを楽観的に望んでいるほど単純であるべきであるかのように思われます.