9

我在 IIS6 上建立了一个 MVC 网站。我使用了内置的 ASP.NET Security without Membership,就像它在模板解决方案中实现的方式一样。保护控制器或操作很容易,但现在我需要将用户管理公开给登录到站点的管理员。我知道用于执行此操作的内置 ASP 控件不是“最佳实践”,而是一条开始工作的狗。那么,通过 ASP.NET MVC 应用程序提供用户管理的最佳实践是什么?

我考虑使用实体框架并将其连接到无数的存储过程。但这似乎很尴尬。我看到了 AccountMembershipService 和 FormsAuthenticationService 的选项。这就是现有项目帐户控制器使用的内容。但是,我对两者都不熟悉。

我不禁认为这应该已经从项目模板中出现了。这是任何网站的基本组成部分,你得到了 15%,为什么没有剩下的呢?

4

5 回答 5

1

据我所知,您使用SqlMembershipProvider作为您的 Membership Provider 实现。我强烈建议您查看MembershipUserMembershipProvider类的一些方法(例如CreateUser等),以实现您正在尝试做的事情,而不是使用用于实现的底层数据库表。

您还可以查看这篇文章,深入了解ASP.NET 的成员资格、角色和配置文件提供程序。

于 2009-07-24T14:42:19.810 回答
1

在 CodePlex 上查看这个项目:ASP.Net MVC Membership Starter Kit

于 2009-07-25T16:43:18.923 回答
0

我不知道“最佳实践”,但我会这样做(以及它是如何用“ Professional ASP.NET MVC 1.0 ”编写的):

您应该有一个自定义的(或默认的) ProfileProvider 和 MembershipProvider 才能正常工作。

创建一个控制器来处理所有成员管理操作,例如。成员管理员控制器

此控制器应指定 Authorize[Roles="Administrator"] 属性,因此只有当用户处于管理员角色时才会处理此控制器中的所有操作。

现在,您可以仅使用此控制器构建您想要的 CRUD 视图和操作。

于 2009-07-27T10:37:18.497 回答
0

我现在让用户身份验证以某种理智的方式工作。要克服的最大障碍是可以使用 Membership 类,即使我没有使用 Membership 的 Profile 方面。获取用户名并执行 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 回答