zoukankan      html  css  js  c++  java
  • AD域账号验证

    public partial class _Default : Page
    {
    [DllImport("advapi32.dll")]
    private static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
    protected void Page_Load(object sender, EventArgs e)
    {
    lblLocaAdAccount.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
    string strDomain = txtDomain.Text.Trim();
    string strUserName = txtUserName.Text.Trim();
    string strPassWord = txtPassWord.Text.Trim();

    lblMsg.Text = "验证中…";
    bool isAccount = ValidateUserAccount(strDomain, strUserName, strPassWord);
    if (isAccount)
    {
    lblMsg.Text = "合法用户";
    }
    else {
    lblMsg.Text = "非法用户";
    }


    if (isAccount)
    {
    //完全采用域用户来管理
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1, // version
    strUserName, // user name
    DateTime.Now, // issue time
    DateTime.Now.AddHours(1), // expires every hour
    false, // don't persist cookie
    "" // roles
    );
    FormsAuthentication.SetAuthCookie(strUserName, false);
    }
    }

    /// <summary>
    /// 域验证
    /// </summary>
    /// <param name="AstrDomainName">域名称</param>
    /// <param name="AstrDomainAccount">域账号</param>
    /// <param name="AstrDomainPassword">域密码</param>
    /// <returns></returns>
    public bool ValidateUserAccount(string AstrDomainName, string AstrDomainAccount, string AstrDomainPassword)
    {
    const int LOGON32_LOGON_INTERACTIVE = 2; //通过网络验证账户合法性
    const int LOGON32_PROVIDER_DEFAULT = 0; //使用默认的Windows 2000/NT NTLM验证方
    IntPtr tokenHandle = new IntPtr(0);
    tokenHandle = IntPtr.Zero;

    string domainName = AstrDomainName; //域 如:officedomain
    string domainAccount = AstrDomainAccount; //域帐号 如:administrator
    string domainPassword = AstrDomainPassword;//密码
    bool checkok = LogonUser(domainAccount, domainName, domainPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);

    return checkok;
    }
    }

    =======================================================================

    其他参考代码 ===============================================================

    =======================================================================

    WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
    WindowsPrincipal currentPrincipal = new WindowsPrincipal(currentIdentity);

    bool isDomainUser = currentPrincipal.IsInRole("Domain Users");
    isDomainUser=true; //为域用户

    string userName=System.Environment.UserName;  //获取计算机登录名称

    string computerName=System.Environment.MachineName;//获取计算机名称

    string computerName=Dns.GetHostName();

  • 相关阅读:
    极客技术专题【011期】:EasyUI初级教程
    帮助自定义选择框样式的Javascript
    利用HTML5与jQuery技术创建一个简单的自动表单完成
    30个iPhone健康应用帮助你保持身体健康
    如何构建下拉滑动式响应导航菜单
    推荐十款来自极客标签的超棒前端特效[第十三期]
    重新设计网站的10点建议
    创建CSS3警示框渐变动画
    17种新型的响应式开发框架
    使用jQuery创建模态窗口登陆效果
  • 原文地址:https://www.cnblogs.com/chengeng/p/5660088.html
Copyright © 2011-2022 走看看