【问题标题】:Managing user profiles with SimpleMembership/Sql Server CE, MongoDB使用 SimpleMembership/Sql Server CE、MongoDB 管理用户配置文件
【发布时间】:2013-10-21 08:05:26
【问题描述】:

我选择使用mongodb 作为存储以域为中心的数据。 我正在寻找official mongodb providers 将它们集成到ASP.NET MVC 项目中以保留单个应用程序数据库。没有官方供应商,可用的供应商看起来并不成熟/稳定。所以我决定按原样使用简单的会员资格。

如果可能,如何从AccountController 中删除Entity Framework 特定的代码?

您将如何管理同时具有SimpleMembership UserProfileMongoDB User 的用户配置文件?

示例

在单独的程序集[project-name].domain 中有两个类:

public class Event {
    public DateTime ScheduledDate { get; set; }
    public String Name { get; set; }
    public Location Location { get; set; }
}

public class User {
    public String Name { get; set; }
    public List<Events> AssociatedEvents { get; set; }
}

如果我将UserProfileId 添加到User,这会是一个解决方案吗?

public class User {
    public Int32 UserProfileId { get; set; }
    public String Name { get; set; }
    public List<Events> AssociatedEvents { get; set; }
}

【问题讨论】:

    标签: c# sql-server asp.net-mvc mongodb


    【解决方案1】:

    您必须使用 appSetting 中的 connectionString。

    您需要下载上面的 fork,构建并更改您现有的 dll 引用以使用新的 dll。

    那么……

    使用你的配置:

    <appSettings>
       <add key="MONGOLAB_URL" value="mongodb://localhost/ASPNETDB"/>    
    </appSettings>
    

    ...上面的值将被 appharbor/mongolab 替换(如果你有应用程序的其他部分可以工作,那么这是正确的)

    <providers>
       <clear />
       <add name="MongoDBMembershipProvider" type="MongoDB.Web.Providers.MongoDBMembershipProvider" 
        applicationName="/"  appSettingsConnectionStringKey="MONGOLAB_URL" collection="Users"
            enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
            maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" />
    </providers>
    

    所以在上面的配置中,它有 appSettingsConnectionStringKey 参数。自定义提供程序中的代码读取 appSettingsConnectionStringKey 值“MONGOLAB_URL”,然后使用它来读取 ConfigurationManager.AppSettings["MONGOLAB_URL"],显然,它必须与上面的 appsetting 键名匹配。

    [1]:https://github.com/osuritz

    [2]:https://github.com/osuritz/MongoDB.Web/commit/b1e9534023ca8cb2e74eb1adbdcb1cd7dd693efa

    【讨论】:

      【解决方案2】:

      您是否需要 MongoDB 的 AspNet.Identity 实现来替换 ASP.NET MVC 5 中标准 AccountController 中的默认 AspNet.Identity.EntityFramework 用法?如果是 - maybe this helps you - 完全实现了 MongoDB.AspNet.Identity。

      【讨论】:

      • 你知道这是否适用于 MVC4 吗?将尝试任何一种方式,但想知道这是否是 MVC5 特定的,如果是这样的话,可以为自己节省一些痛苦......
      • Microsoft Owin 通过 NuGet 分发,因此看起来您可以将其添加到您的 MVC4 项目并使用 Owin 身份而不是旧的 Forms/Membership 提供程序模型。
      • 走的是 MVC5 路线。开始一个新项目......不妨从最新/最伟大的开始。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2015-09-03
      • 2012-09-20
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多