1

[问题]

我有一个带有用户凭据的预建数据库。关于这个数据库,我唯一可以改变的是密码是如何散列的。(不要问这个......让我们说它很愚蠢,我正在修复它,拜托。)它填充了凭据,所以无论我使用什么都必须适应它。我们正在切换到 ASP.net MVC4 框架,并从头开始。

[问题]

如果有问题,我应该使用什么会员系统?

它应该:

a) 允许我使用 SHA512 检查数据库的密码 b) 根据结果设置角色 c) 装饰控制器中的操作,让我感觉自己像个老板

[细节]

假设我有一个网站,供喜欢扮演牙刷角色的人使用。现有数据库中已有大量数据(对于中小型网站)。我正在迁移到一个全新的数据库布局,并将从旧的进行转换。我们可以改变用户系统的管理方式,但老实说,我们宁愿不这样做。我们有一个包含用户名和密码的用户表。很简单。

我用谷歌搜索过,搜索过,Stack Overflow'd 和 Stack Overflow'd。我发现本质上是一本选择你自己的冒险书,其中要么有空白页码,要么给我一页,看一本与这本冒险不太一样的旧书。

我希望要么a)有人会称我为愚蠢的屁股并指出我在问一个重复的问题,该问题导致资源具有一些​​完整的示例和/或有关如何做我想做的事情的文档或b)帮助我找到一种方法。

截至目前,我正在考虑编写自己的用户管理/身份验证过滤系统。我打算选择 MembershipProvider ,但这似乎有点矫枉过正,似乎并没有达到我想要的效果。也许我的视野太窄了。

我非常愿意以自己的方式解决问题并努力解决问题,但如果有可用的东西我可以加入,我不想推出自己的东西。

更新 1

Win 发表了关于 MembershipProvider 独立于 MVC 系统的评论,这给了我一个“啊哈!” 事情走到一起的那一刻。我正在重新评估我的研究,看看我是否没有正确地将拼图拼凑在一起。

更新 2

在 dkroy 和 Win 的大力帮助下,我对这里发生的事情有了更深入的了解。完成所有工作后,我会将其包含在编辑中,以供其他寻找信息的人使用。从本质上讲,在我考虑废弃它之前,我已经走在了正确的轨道上。我没有实现 GetUser 调用,也没有调用 SetAuthCookie,所以它不能正常工作。我现在正在编写 RoleProvider。

4

2 回答 2

1

a) 允许我使用 SHA512 检查数据库的密码

会员提供者支持 SHA512。

b) 根据结果设置角色 c) 装饰控制器中的动作,让我感觉自己像个老板

如果要按角色限制用户,则需要同时实现Custom Memebership Provider 和 Custom Role Provider

但是,您不需要全部覆盖。以下是主要的 -

// Membership provider 
public override bool ValidateUser(string username, string password)

public override MembershipUser GetUser(string username, bool userIsOnline)

public override string GetUserNameByEmail(string email)

// Role provider
public override bool IsUserInRole(string username, string roleName)

public override string[] GetRolesForUser(string username)
于 2013-04-12T17:12:13.663 回答
1

您可以创建自己的自定义 RoleProvider 和 MembershipProvider。这样,您将能够使用现有的数据库结构,并且仍然利用 ASP.NET 实现的 MembershipProvider 和 RoleProvider 合同来提供成员服务。对自定义 MembershipProviders 的最小搜索应该可以帮助您入门。

于 2013-04-12T16:41:11.870 回答