Asp.net mvc 4 如何将自己的数据库与SimpleMembership和WebSecurity结合使用?MVC4安全性是关于什么的?

Asp.net mvc 4 如何将自己的数据库与SimpleMembership和WebSecurity结合使用?MVC4安全性是关于什么的?,asp.net-mvc-4,asp.net-membership,forms-authentication,membership-provider,simplemembership,Asp.net Mvc 4,Asp.net Membership,Forms Authentication,Membership Provider,Simplemembership,我已经阅读了所有关于这个主题的文章,包括MSDN的文章和帖子,但我仍然非常迷茫和困惑 问题 请回答以下问题(如果可能,请简短回答): 什么是SimpleMembership/SimpleMembershipProvider(WebMatrix.WebData)以及他们负责什么 什么是网络安全性(WebMatrix.WebData) 什么是会员资格(System.Web.Security)类 为什么MVC4要创建一个用户档案表和一个网页(U成员表)?它们是干什么用的,有什么区别?MVC4创建

我已经阅读了所有关于这个主题的文章,包括MSDN的文章和帖子,但我仍然非常迷茫和困惑

问题 请回答以下问题(如果可能,请简短回答):

  • 什么是SimpleMembership/SimpleMembershipProvider(WebMatrix.WebData)以及他们负责什么

  • 什么是网络安全性(WebMatrix.WebData)

  • 什么是会员资格(System.Web.Security)类

  • 为什么MVC4要创建一个用户档案表和一个网页(U成员表)?它们是干什么用的,有什么区别?MVC4创建的UserProfile类是什么

  • 什么是用户上下文类

  • 所有这些如何协同工作以进行用户身份验证

  • 我的处境 这些问题接着引出下一个问题:

    假设我有一个包含用户(ID、用户名、密码)的现有数据库。我正在创建一个新的MVC4应用程序并使用表单身份验证。用户密码以加密形式(非bcrypt)存储在数据库中

    我必须做什么才能使它与MVC4一起工作

    我是否必须创建自定义会员资格提供商

    迄今为止我的知识 据我所知,WebSecurity是一个与成员资格提供者交互的静态类(模块)。MembershipProvider是一个解释特定函数如何工作的类,例如ValidateUser、CreateUser、ChangePassword

    为了解决我的问题,我假设我需要创建一个自定义的MembershipProvider,并告诉WebSecurity使用我的新MembershipProvider

    赏金? 我已经悬赏了这个问题,并打算奖励安迪·布朗一个出色的答案。

    请参见下面的每个引用的摘要以获得快速答案,并查看段落以获得详细信息。另请参见末尾的参考资料部分,了解权威来源

    摘要 1.什么是SimpleMembership/SimpleMembershipProvider(WebMatrix.WebData)以及他们负责什么

    SimpleMembership(一个涵盖和的术语)负责提供一种干净、快速的方式来实现一个具有安全密码存储的80%即插即用身份验证和授权框架,任何人都可以使用

    2.什么是Web安全性(WebMatrix.WebData)

    是用于常见成员身份任务的帮助器类,与
    成员身份
    和一起工作。仍然可以通过单独访问角色

    3.什么是会员资格(System.Web.Security)类

    是来自原始ASP.NET成员身份实现的静态类,用于管理用户设置和操作。许多用户操作仍然在这里完成,而不是在
    WebSecurity
    中重复。它们都使用您选择的同一提供商

    4.为什么MVC4创建UserProfile表和webpages\U成员表?它们是干什么用的,有什么区别?MVC4创建的UserProfile类是什么

    这两个表执行不同的功能。
    webpages\u Membership
    模式由框架控制并用于凭证,
    UserProfile
    模式由我们控制并用于我们要针对用户存储的任何属性

    5.什么是UsersContext类

    它是MVC Internet应用程序模板提供的一个(部分)起点。它唯一的任务是包含
    UserProfile
    类,以便我们可以使用它(例如,通过
    InitializeSimpleMembershipAttribute

    6.所有这些如何协同工作以进行用户身份验证

    从上面的总结和下面的细节可以看出这一点。使用:
    WebSecurity
    用于常见任务
    UserProfile
    用于针对用户存储自定义属性,可通过
    UsersContext
    访问(在Visual Studio“MVC Internet应用程序”模板中)<当
    WebSecurity
    OAuthWebSecurity
    没有该方法时,code>Membership;以及角色的
    角色
    。使用VS模板的控制器查看使用示例

    编辑。万一有人走到这一步

    假设我有一个现有的数据库

    如果您有一个现有数据库,并且编写自定义成员资格提供程序的唯一原因是处理遗留密码存储方法,那么您可以使用一种变通方法。只有当您可以从旧密码存储转移到SimpleMembership算法(使用该类)时,这才有效。详情见脚注

    如果你不能离开,那么是的,你必须创建自己的提供者来使用你的特定密码算法,你可以这样做

    注意:
    SimpleMembershipProvider
    将提供。如果您不知道两者之间的区别及其重要性,请在使用自定义安全性创建自己的提供商之前三思而后行


    细节 1.什么是SimpleMembership/SimpleMembershipProvider 要了解这一切是如何结合在一起的,就要了解历史

    • 2005年的ASP.NET
    • 该系统使用提供者从用于管理帐户和角色等的公共接口中抽象出实现细节
    • 它还为我们提供了一个基本的“用户配置文件”功能(存储在单列xml字段中,因此人们倾向于避免使用该字段)
    • SimpleMembership于2010年发布,作为一个插件到ASP.NET成员资格系统的提供商,它还允许OAuth身份验证和每列用户配置文件属性存储(而不是原始实现中使用的单列存储)
    • 实现以扩展原始提供程序实现
    它是开源的(镜像的)。就安全而言,你可以