2013-03-30 40 views
0

我已經做了MVC 4個網站,並想重新使用的登錄,但我不想使用SQL,我想使用MongoDB的,所以在使用本指南http://www.danharman.net/2011/06/23/asp-net-mvc-3-custom-membership-provider-with-repository-injection/重用MVC4登錄使用MongoDB的

我已經做出了新的的MembershipProvider 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> 

我得到這個錯誤,當我點擊「登錄」enter image description here(右鍵點擊並複製圖片鏈接即可看到完整大小)

難道不可以重複使用這樣的登錄系統嗎?

回答

1

你改變MongoMembershipProvider從ExtendedMembershipProvider

public class MongoMembershipProvider : ExtendedMembershipProvider 
1

繼承試試這個下面的代碼,而不是websecurity.Login

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