我想在mvc 4應用程序中實現簡單的AD身份驗證。以下是我在web.config文件中改變:在mvc 4應用程序中使用AspNetSqlMembershipProvider而不是ActiveDirectoryMembershipProvider
<connectionStrings>
<add name="ADConnectionString" connectionString="LDAP://test.com:636/DC=test,DC=com"/>
</connectionStrings>
...
<membership defaultProvider="ADMembershipProvider">
<providers>
<clear/>
<add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName"/>
</providers>
下面是這是使用AD認證我的服務類中的方法:
public bool Authentificate(string userName, string password)
{
var membershipSection = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership");
string defaultProvider = membershipSection.DefaultProvider;
MembershipProvider provider = Membership.Providers[defaultProvider];
return provider != null && provider.ValidateUser(userName, password);
}
但是,當我調試我的應用我看到「defaultProvider 「是‘AspNetSqlMembershipProvider’而不是‘ActiveDirectoryMembershipProvider’和認證失敗與消息:
無法連接到SQL Server數據庫。在 System.Web.Management.SqlServices.GetSqlConnection(字符串服務器, 字符串用戶,字符串password,布爾可信,字符串 的connectionString)在 System.Web.Management.SqlServices.SetupApplicationServices(字符串 服務器,字符串用戶,字符串密碼布爾信任,字符串 的connectionString,數據庫字符串,字符串dbFileName,SqlFeatures 功能,布爾安裝)在 System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(字符串 fullFileName,DATADIR字符串,字符串的connectionString)
什麼是wron g在這裏?
似乎出於某種原因,配置不是從web.config加載,而是從machine.config文件加載。你能分享一些你的解決方案的結構信息嗎?這個服務類在哪裏定義,以及如何和在哪裏調用? – Andrei
@Andrei你好!我有以下解決方案結構(6個項目): ** MyProject.Data MyProject.Domain MyProject.Infrastructure MyProject.Presentation MyProject.Tests MyProject.Web ** ** web.config **位於.Web項目根目錄中。具有** Authentificate()**方法的服務類位於**。Domain **項目中。此方法在**。Presentation **項目中由控制器類調用。並且控制器正在使用來自**。Web項目的視圖。如果需要,我可以添加任何其他信息。 – user2598794
應用程序的入口點在哪裏?它是否在**。Web **或**。Presentation **項目中,或者在其他地方? – Andrei