繁体   English   中英

使用MongoDB重用MVC4登录

[英]Reuse MVC4 login with MongoDB

我已经创建了一个MVC 4站点,并希望重用登录,但我不想使用SQL,我想使用MongoDB,所以使用本指南http://www.danharman.net/2011/06/23/asp-净MVC-3-定制会员制提供商与系统信息库注入/

我做了一个新成员提供了https://github.com/Mech0z/GoldSilverEarnings/blob/master/GoldSilverWebServer/Authentication/MongoDB/MongoMembershipProvider.cs

和roleprovider https://github.com/Mech0z/GoldSilverEarnings/blob/master/GoldSilverWebServer/Authentication/MongoDB/MongoRoleProvider.cs

然后我有这个Web.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MongoConnection" connectionString="mongodb://censored" />
</connectionStrings>
<appSettings>
<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<membership defaultProvider="AccountMembershipProvider">
  <providers>
    <add name="AccountMembershipProvider"
         type="GoldSilverWebServer.Authentication.MongoDB.MongoMembershipProvider" />
  </providers>
</membership>

<roleManager enabled="true" defaultProvider="AccountRoleProvider">
  <providers>
    <clear/>
    <add name="AccountRoleProvider"
         type="GoldSilverWebServer.Authentication.MongoDB.MongoRoleProvider" />
  </providers>
</roleManager>

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages>
  <namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
  </namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="MongoDBSettings.Driver" publicKeyToken="f686731cfb9cc103" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.8.0.124" newVersion="1.8.0.124" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="MongoDBSettings.Bson" publicKeyToken="f686731cfb9cc103" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.8.0.124" newVersion="1.8.0.124" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="MongoDB.Driver" publicKeyToken="f686731cfb9cc103" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.8.0.124" newVersion="1.8.0.124" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="MongoDB.Bson" publicKeyToken="f686731cfb9cc103" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.8.0.124" newVersion="1.8.0.124" />
  </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

点击“登录”后出现此错误 在此输入图像描述 (右键单击并复制图像URL以查看完整大小)

是不是可以像这样重用登录系统?

您将MongoMembershipProvider更改为从ExtendedMembershipProvider继承

public class MongoMembershipProvider : ExtendedMembershipProvider

请尝试以下代码而不是websecurity.Login

if (Membership.ValidateUser(model.UserName, model.Password))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM