9

IIS6 で MVC Web サイトを構築しました。テンプレート ソリューションに実装されていたのと同じように、組み込みの ASP.NET セキュリティをメンバーシップなしで使用しました。コントローラーまたはアクションを保護するのは簡単ですが、サイトにログインしている管理者にユーザー管理を公開する必要があります。これを行うためのビルトイン ASP コントロールは「ベスト プラクティス」ではなく、機能する犬であることを理解しています。では、ASP.NET MVC アプリケーションを介してユーザー管理を提供するためのベスト プラクティスは何でしょうか?

Entity Framework を使用して、それを無数のストアド プロシージャに接続することを検討しました。しかし、それは厄介なようです。AccountMembershipService と FormsAuthenticationService のオプションが表示されます。これは、既存のプロジェクト アカウント コントローラーが使用するものです。しかし、私はどちらにも精通していません。

これは、プロジェクト テンプレートから既に存在しているはずだと思わずにはいられません。これはあらゆるウェブサイトの基本的な部分であり、15% が与えられましたが、残りはなぜでしょうか?

4

5 に答える 5

1

CodePlex でこのプロジェクトを確認してください: ASP.Net MVC メンバーシップ スターター キット

于 2009-07-25T16:43:18.923 に答える
1

私が知る限り、メンバーシップ プロバイダーの実装としてSqlMembershipProviderを使用しています。実装に使用される基礎となるデータベース テーブルを操作する代わりに、MembershipUserおよびMembershipProviderクラスのメソッド ( CreateUserなど) をいくつか見て、目的を達成することを強くお勧めします。

ASP.NET のメンバーシップ、ロール、およびプロファイルプロバイダーの詳細な概要については、この記事を参照することもできます。

于 2009-07-24T14:42:19.810 に答える
0

現在、ユーザー認証はやや正常な方法で機能しています。乗り越えるための最大のハードルは、メンバーシップのプロファイルの側面を使用していなくても、メンバーシップクラスを使用しても問題がないことです。ユーザー名を取得してMembership.GetUser(UserName)を実行するのは簡単です。次に、ロック解除、承認/不承認、パスワードの変更、パスワードの質問/回答の変更など、多くのことを実行できます...必要なすべての基本事項。

基本は次のとおりです。

'get current logged in user
Dim currentUser As MembershipUser = Membership.GetUser()

'get current logged in user name
Dim userName = currentUser.UserName

'get current user email
Dim userEmail = currentUser.Email

'get a user to edit
Dim editingUser = Membership.GetUser(UserName)

'set the user email
editingUser.Email = newEmail
Membership.UpdateUser(editingUser)

‘unlock user
editingUser.UnlockUser() 

‘disapprove user
editingUser.IsApproved = False
Membership.UpdateUser(editingUser) 

‘approve user
editingUser.IsApproved = True
Membership.UpdateUser(editingUser)

‘change pw
editingUser.ChangePassword(oldPw, newPw)

そしてそれはほとんどすべてありますそれもあります

于 2009-08-14T21:03:41.333 に答える
0

MvcCms では、デフォルトで RoleProvider を使用しましたが、メンバーシップ プロバイダーをエンティティに変換しました。

http://mvccms.codeplex.com/SourceControl/changeset/view/56727#994414

于 2010-10-10T01:10:20.820 に答える
0

「ベストプラクティス」についてはわかりませんが、これは私が行う方法です(そして、「Professional ASP.NET MVC 1.0」で書かれている方法です):

これが機能するためには、カスタム (またはデフォルト) の ProfileProvider と MembershipProvider が必要です。

すべてのメンバー管理アクションを処理するコントローラーを作成します。MemberAdminController

このコントローラーには Authorize[Roles="Administrator"] 属性を指定する必要があるため、このコントローラーのすべてのアクションは、ユーザーが管理者ロールにある場合にのみ処理されます。

これで、このコントローラーのみを使用して、CRUD ビューとアクションを作成できます。

于 2009-07-27T10:37:18.497 に答える