カスタム ASP.NET ロール プロバイダーを実装していますが、渡されたユーザーが渡されたロールに既に含まれている場合、そのAddUsersToRoles
メソッドが をスローする必要があるかどうか疑問に思っています。デフォルトの Microsoft SQL Server ロール プロバイダーは、Microsoft の公式ドキュメントでは推奨されていません。ProviderException
SqlRoleProvider
例外の詳細: System.Configuration.Provider.ProviderException: ユーザー 'myTestUser' は既にロール 'myTestRole' にあります。
この場合、プロバイダーが例外をスローするのではなく、特定のユーザーが既に特定のロールにいるときに先に進むことが役立つと思います。そうすれば、呼び出し元のコードは重複について心配する必要がありません。しかし、この場合、スローされる例外に依存する既存のロール プロバイダーを使用するコードが存在する可能性はありますか? あるとすれば、マイクロソフト自身が推奨していないように見えるので、そうするべきでしょうか?
AddUsersToRoles
ユーザーが既にロールにいるときに例外をスローしないようなメソッドを実装したい場合は、3 つの選択肢があります。
- として実装し
AddUsersToRoles
、デフォルトとは異なる動作をするだけですSqlRoleProvider
。 EnsureUsersInRoles
これをロール プロバイダー クラスの新しいメソッドとして実装し、((MyProvider)(Roles.Provider)).EnsureUsersInRoles()
.- 完全に別のクラスに実装するだけです。