Логин не работает и не загружается на веб-страницу по умолчанию - PullRequest
0 голосов
/ 19 февраля 2020

После бесчисленных попыток мой логин не работает. Я не могу понять для меня, почему. Не уверен, что проблема в моем C# коде или HTML коде. В моей всплывающей форме вы вводите свои учетные данные, и он перенаправляет вас на страницу по умолчанию. Это тоже не помогает, и я надеюсь, что кто-то может мне помочь!

Вот мой HTML -

<form class="form-container">
    <h1>Login</h1>
    <p style="text-align:center">Please login using your <strong><em>User ID and Password</em></strong></p>

    <label for="Login"><b>User ID</b></label>
    <input type="text" placeholder="Enter User ID" name="Login" required="" id="username" />

    <label for="password"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="password" required="" id="Password" />

    <button type="submit" class="btn" onclick="CheckUserLogon">Login</button>

    <button type="button" class="btn cancel" onclick="closeForm()">Close</button>
</form>
<script>
    function CheckUserLogon() {
        var objButton = document.getElementById("CheckUserLogon");
        objButton.click();
        Response.Redirect("~/WebForm1.aspx");
    }

    function openForm() {
        document.getElementById("myForm").style.display = "block";
    }

    function closeForm() {
        document.getElementById("myForm").style.display = "none";
    }
</script>

Вот мой C# код -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Security.Principal;
using System.Runtime.InteropServices;
using System.DirectoryServices.AccountManagement;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace PMOLogin
{
 public partial class Login: System.Web.UI.Page
 {
  public class UserValidation
  {
   [DllImport("advapi32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
   [
    return :MarshalAs(UnmanagedType.Bool)
   ]
   internal static extern bool LogonUser
    (
     [MarshalAs(UnmanagedType.LPStr)] string pszUserName,
     [MarshalAs(UnmanagedType.LPStr)] string pszDomain,
     [MarshalAs(UnmanagedType.LPStr)] string pszPassword,
     int dwLogonType,
     int dwLogonProvider,
     ref IntPtr phToken
    );

   [DllImport("kernel32.dll", SetLastError = true)]
   static extern bool CloseHandle(IntPtr handle);
   public enum LogonType
   {
    /// <summary>
    /// This logon type is intended for users who will be interactively using the computer, such as a user being logged on
    /// by a terminal server, remote shell, or similar process.
    /// This logon type has the additional expense of caching logon information for disconnected operations;
    /// therefore, it is inappropriate for some client/server applications,
    /// such as a mail server.
    /// </summary>
    LOGON32_LOGON_INTERACTIVE = 2,

     /// <summary>
     /// This logon type is intended for high performance servers to authenticate plaintext passwords.

     /// The LogonUser function does not cache credentials for this logon type.
     /// </summary>
     LOGON32_LOGON_NETWORK = 3,

     /// <summary>
     /// This logon type is intended for batch servers, where processes may be executing on behalf of a user without
     /// their direct intervention. This type is also for higher performance servers that process many plaintext
     /// authentication attempts at a time, such as mail or Web servers.
     /// The LogonUser function does not cache credentials for this logon type.
     /// </summary>
     LOGON32_LOGON_BATCH = 4,

     /// <summary>
     /// Indicates a service-type logon. The account provided must have the service privilege enabled.
     /// </summary>
     LOGON32_LOGON_SERVICE = 5,

     /// <summary>
     /// This logon type is for GINA DLLs that log on users who will be interactively using the computer.
     /// This logon type can generate a unique audit record that shows when the workstation was unlocked.
     /// </summary>
     LOGON32_LOGON_UNLOCK = 7,

     /// <summary>
     /// This logon type preserves the name and password in the authentication package, which allows the server to make
     /// connections to other network servers while impersonating the client. A server can accept plaintext credentials
     /// from a client, call LogonUser, verify that the user can access the system across the network, and still
     /// communicate with other servers.
     /// NOTE: Windows NT:  This value is not supported.
     /// </summary>
     LOGON32_LOGON_NETWORK_CLEARTEXT = 8,

     /// <summary>
     /// This logon type allows the caller to clone its current token and specify new credentials for outbound connections.
     /// The new logon session has the same local identifier but uses different credentials for other network connections.
     /// NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider.
     /// NOTE: Windows NT:  This value is not supported.
     /// </summary>
     LOGON32_LOGON_NEW_CREDENTIALS = 9,
   }

   public enum LogonProvider
   {
    /// <summary>
    /// Use the standard logon provider for the system.
    /// The default security provider is negotiate, unless you pass NULL for the domain name and the user name
    /// is not in UPN format. In this case, the default provider is NTLM.
    /// NOTE: Windows 2000/NT:   The default security provider is NTLM.
    /// </summary>
    LOGON32_PROVIDER_DEFAULT = 0,
     LOGON32_PROVIDER_WINNT35 = 1,
     LOGON32_PROVIDER_WINNT40 = 2,
     LOGON32_PROVIDER_WINNT50 = 3
   }

   [System.Web.Services.WebMethod]
   //[SoapDocumentMethod(OneWay = true)]
   public static void CheckUserLogon(string username, string Password)
   {
    const int LOGON32_LOGON_NEW_CREDENTIALS = 9;
    const int LOGON32_PROVIDER_WINNT50 = 3;
    IntPtr hToken = IntPtr.Zero;
    bool retval;
    retval = LogonUser(username, "ap", Password, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, ref hToken);
   }
  }
 }
}

Когда я нажимаю на кнопку входа в систему, я полагаю, что я вошел в систему, и предполагается, что WebForm1 открывается, вместо этого ничего не происходит. Я добавил method="get" в мою форму, и он все еще делает то же самое. Не совсем уверен, где go, так как я добавил все, что мог, с точки зрения сценария и нажатия кнопки. Может быть что-то не так с моим C# методом CheckUserLogon. На данный момент, все было бы полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...