我在IIS6上建立了一个MVC网站。我使用内置的ASP.NET Security而不使用Membership,就像在模板解决方案中实现它一样。很容易保护控制器或操作,但现在我需要将用户管理公开给登录到站点的管理员。据我所知,内置的ASP控件不是“最佳实践”,而且是开始工作的狗。那么通过ASP.NET MVC应用程序提供用户管理的最佳实践是什么?
我考虑使用实体框架并将其连接到无数的存储过程。但这似乎很尴尬。我看到AccountMembershipService和FormsAuthenticationService的选项。这就是现有项目帐户控制器使用的内容。但是,我也不喜欢它们。
我不禁认为这应该已经从项目模板中出现了。这是任何网站的基本部分,你获得了15%,为什么不给其他人?
答案 0 :(得分:1)
据我所知,您使用 SqlMembershipProvider 作为会员提供商实施。我强烈建议您查看一下 MembershipUser 和 MembershipProvider 类的一些方法(例如 CreateUser 等)来实现您正在尝试而不是使用用于实现的底层数据库表。
您还可以查看this article深入了解 ASP.NET的成员资格,角色和个人资料提供商。
答案 1 :(得分:1)
在CodePlex查看此项目:ASP.Net MVC Membership Starter Kit
答案 2 :(得分:0)
我不知道“最佳做法”,但我就是这样做的(以及它是如何写成“Professional ASP.NET MVC 1.0”):
您应该有一个自定义(或默认)ProfileProvider和MembershipProvider,以便它可以工作。
创建一个处理所有成员管理操作的控制器,例如。 MemberAdminController
此控制器应指定Authorize [Roles =“Administrator”]属性,以便只有在用户处于管理员角色时才会处理此控制器中的所有操作。
现在,您可以构建CRUD视图和操作,仅使用此控制器。
答案 3 :(得分:0)
我现在有一个用户认真的工作方式。克服的最大障碍是使用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)
并且大部分都是这样的
答案 4 :(得分:0)
在MvcCms中,我们使用了开箱即用的RoleProvider,但将成员资格提供者转换为实体。
http://mvccms.codeplex.com/SourceControl/changeset/view/56727#994414