2015-02-05 85 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> 
相关问题