2015-02-05 81 views
-2

我正在尋找一個Razor語法的例子,它將放入ASP.NET Web頁面的cshtml文件中。我正在尋找的解決方案將排除在Visual Studio中編寫C#類。我們的項目不是一個MVC項目,而是一個Web Pages項目。如何使用ASP.NET網頁和Razor對Active Directory進行身份驗證?

我需要提示用戶輸入他們的Intranet Web應用程序的用戶名和密碼,並使用LDAP查詢對Active Directory進行身份驗證。 (例如像WebSecurity幫助程序,而不是查詢數據庫,我會查詢AD服務器)。我希望Web矩陣中有一個內置的幫助程序,例如,我忽略了這個幫助程序。

+0

你有什麼試過或者你到目前爲止得到了什麼..?你是否熟悉'PrincipalContext' ..在這裏你可以找到很多工作示例[C#PrincipalContext示例](http://www.google.com) – MethodMan 2015-02-05 19:40:33

+0

我用'+ Razor Active Directory ASP.NET'搜索了Google,這是第二次打擊:http://forums.asp.net/t/1851715.aspx?MVC3+C+using+razor+with+ldap+active+directory+Authentication – 2015-02-05 19:45:58

+0

我正在尋找的解決方案將排除編寫一個C#類在Visual Studio中。例如,我希望在Web Matrix中有一個內置的Helper(例如像WebSecurity助手)。也許它不存在,我需要使用C#/ VS的其中一個示例自己創建一個Helper,然後將其導入到Web Pages項目中。 – lucid 2015-02-05 19:53:02

回答

0

明白了。在Web Matrix中,打開NuGet軟件包管理器並安裝Novell.Directory.Ldap軟件包。下面是一個示例用法:

@using Novell.Directory.Ldap; 
@{ 
    Validation.RequireField("username", "username is required"); 
    Validation.RequireField("password", "password is required"); 

    var username = ""; 
    var userdn = ""; 
    var domain = "domain.com"; 
    var pwd = ""; 
    var error = ""; 

    if (IsPost) { 
     if (Validation.IsValid()) { 
      username = Request["username"]; 
      userdn = "cn=" + username + ",ou=Users,o=INTRANET"; 
      pwd  = Request["password"]; 

      try { 
       LdapConnection ldapConnection = new LdapConnection(); 
       ldapConnection.Connect(domain, 389); 
       ldapConnection.Bind(userdn, pwd); 
      } 
      catch (LdapException e) { 
       error = e.LdapErrorMessage; 
      } 
     } 
    } 
} 

<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Hello LDAP Page</title> 
    </head> 
    <body> 
     <h1>Hello LDAP Page</h1> 
     @if (IsPost) { 
      if (error.IsEmpty()) { 
       <p>'@username' was successfully authenticated against <i>@domain</i>!</p> 
      } 
      else { 
       <p>error! @error</p> 
      } 
     } 
     else { 
      @Html.ValidationSummary() 
      <form method="post"> 
      <fieldset> 
       <legend>Login</legend> 
       <p><label for="username">Username:</label> 
        <input type="text" name="username" value="" /> 
        @Html.ValidationMessage("title")</p> 

       <p><label for="password">Password:</label> 
        <input type="password" name="password" value="" /> 
        @Html.ValidationMessage("password")</p> 

       <p><input type="submit" name="buttonSubmit" value="Login" /></p> 
      </fieldset> 
      </form> 
     } 

    </body> 
</html> 
相關問題