Asp.net mvc 4 我应该使用什么样的会员制?

Asp.net mvc 4 我应该使用什么样的会员制?,asp.net-mvc-4,asp.net-membership,Asp.net Mvc 4,Asp.net Membership,[问题] 我有一个带有用户凭据的预构建数据库。关于这个数据库,我唯一能改变的就是密码的散列方式。(不要问这个……我们就说它很傻,我正在修复它,拜托。)它充满了凭证,所以我使用的任何东西都必须对它进行建模。我们正在切换到ASP.net MVC4框架,从头开始 [问题] 如果有问题,我应该使用什么会员制 它应当: a) 允许我使用SHA512检查数据库的密码 b) 根据结果设置角色 c) 装饰控制器中的动作,让我感觉自己像个老板 [详情] 假设我有一个网站,为喜欢扮演牙刷角色的人服务。现有数据库中已

[问题]

我有一个带有用户凭据的预构建数据库。关于这个数据库,我唯一能改变的就是密码的散列方式。(不要问这个……我们就说它很傻,我正在修复它,拜托。)它充满了凭证,所以我使用的任何东西都必须对它进行建模。我们正在切换到ASP.net MVC4框架,从头开始

[问题]

如果有问题,我应该使用什么会员制

它应当:

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

[详情]

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

我用谷歌搜索过,谷歌搜索过,堆栈溢出,堆栈溢出。我所发现的基本上是一本选择你自己的冒险书,它们要么有空白页码,要么给我一页到一本冒险与本书不太相似的旧书

我希望a)有人会叫我哑巴,并指出我在问一个重复的问题,这会导致一个关于如何做我想做的事情的完整示例和/或文档资源,或者b)帮助我找到一种方法

目前,我正在考虑编写自己的用户管理/身份验证过滤系统。我本来打算和会员服务提供商一起去,但这似乎有些过分,似乎没有达到我想要的效果。也许我的视野太窄了

我非常愿意自己动手解决一个问题,但如果有什么东西我可以利用的话,我不想自己动手

更新1

Win评论说,会员资格提供商独立于MVC系统,这给了我一个“啊哈!”的时刻。我正在评估我的研究,看看我是否只是没有正确地把拼图拼在一起

更新2


在德克罗伊和温的帮助下,我对这里的情况有了更深的了解。一旦我做了所有的事情,我会把它包括在一个编辑为任何其他人寻找信息。基本上,在我考虑放弃它之前,我已经走上了正确的道路。我没有实现GetUser调用,也没有调用SetAuthCookie,因此无法正常工作。我现在正在编写RoleProvider。

您可以创建自己的自定义RoleProvider和MembershipProvider。这样,您就可以使用现有的数据库结构,并且仍然可以利用ASP.NET实现的MembershipProvider和RoleProvider契约来提供会员服务。对自定义成员资格提供商的最小搜索应该可以让您开始。

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

会员资格提供商支持SHA512

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

如果要按角色限制用户,则需要实现

但是,您不需要覆盖所有。以下是主要的:

// 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)

我在这方面做了一些研究,似乎有些过分了。当我查看时,我发现唯一一个远程有用的功能是ValidateUser。所有的CRUD函数都在别处处理,我们还没有用户锁定。必须这样做是很典型的吗?如果你不使用特定的函数,你就不需要真正实现它。如果你在一天结束之前没有得到你想要的答案,我会写一个最小的实现。谢谢!不要担心实现:我想弄清楚这一点,并且不希望代码被抛出。我想我现在把2+2放在一起了,多亏了你,我赢了。谢谢你的链接,我还没有找到。不幸的是,当我尝试构建时,有人告诉我需要实现每个方法和属性。这是我的生成过程的失败吗?是的,您需要覆盖所有方法。但是,除了我列出的以外,您可以将其留空(这是正常的)。当然,如果您知道没有实现该方法,您不希望故意调用
GetAllUsers
。您必须提供与每个方法的签名匹配的方法,但是您不必为所有方法编写实际的实现。只需将它们的每个内容设置为以下
throw new NotImplementedException()VS让我自动实现它。鉴于我正在研究MVC4,并且文章引用了MVC2,有什么问题需要我注意吗?我承认我一半的无知是完全忽略了大多数MVC4之前的文章,因为互联网把我和“X在MVC4之前不起作用”混淆了。自定义成员资格与MVC无关。这是一个美丽的供应商模式。祝你好运