0

I have made a MVC 4 site and want to reuse the login, but I dont want to use SQL, I want to use MongoDB, so using this guide http://www.danharman.net/2011/06/23/asp-net-mvc-3-custom-membership-provider-with-repository-injection/

I have made a new membershipprovider https://github.com/Mech0z/GoldSilverEarnings/blob/master/GoldSilverWebServer/Authentication/MongoDB/MongoMembershipProvider.cs

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

I then have this 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>

I get this error when I click "Login" enter image description here (Right click and copy image url to see full size)

Is it not possible to reuse the login system like this?

4

2 回答 2

1

You change your MongoMembershipProvider to inherit from ExtendedMembershipProvider

public class MongoMembershipProvider : ExtendedMembershipProvider
于 2013-03-30T16:24:17.170 回答
1

Try this below code instead of websecurity.Login

if (Membership.ValidateUser(model.UserName, model.Password))
于 2013-03-30T17:35:15.887 回答