asp.net Web サイトで作業していますが、フォーム認証を使用してカスタム ロール プロバイダーを実装する際に問題が発生しています。
UserRoleID、EmployeeID、RoleID、および UserName フィールドを含む「UserRoles」テーブルを持つ SQL Server データベース「MyBase」があります。ユーザーがカスタム ログイン ページ (2 つのテキスト ボックス、ラベル、およびボタンのみ) を使用してログインするときに、このテーブルからユーザーのロールを取得したいと考えています。
いくつかの質問、シナリオ、および例を検索して読みましたが、まだどこかに欠けているものがあるため、支援を求めています。
私がこれまでに行ったこと:
web.config:
- 認証モードをフォームに設定する
- メンバーシップ プロバイダーの設定を行う
- ロール プロバイダー設定の設定
次のカスタム クラスを作成し、サブ/関数/プロパティをリストしました。
- RoleProvider --GetRolesForUser --IsUserInRole --ApplicationName
- MembershipProvider --GetUser --UpdateUser --ValidateUser
- メンバーシップユーザー
私のログインボタンで:
- ユーザーのパスワードを暗号化します。
MemProv.ValidateUser(txt_username.Text, encrypedPW)
true または false を正しく返すカスタム MembershipProviders の ValidateUser を呼び出します。- 電話
FormsAuthentication.SetAuthCookie(txt_username.Text, False)
- カスタム RoleProvider の GetRolesForUser 関数を呼び出します。
RoleProv.GetRolesForUser(txt_Username.Text)
これは String() またはロールを正しく返します。
User.Identity を確認すると、isAuthenticated = false および Name = "" です。
IIdentity や IPrincipal の実装が欠落していると確信していますが、それらをどこにどのように実装するかはわかりません。
だから私の質問は:
作成した SQL Server テーブルにロールを保持するためだけに、これらすべてを実行する必要がありますか?
IIDentity と IPrincipal を組み込む必要がありますか? もしそうなら、どのように、またはどこでそれを行うのですか?