`
wyf
  • 浏览: 433580 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

asp.net(C#)读取域名服务器AD帐号

阅读更多

c#源码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Security.Principal;
using System.Runtime.InteropServices;
using System.Data.SqlClient;
using System.Web.SessionState;

public partial class login : System.Web.UI.Page
{
    String str_userId = "";
    String str_userName = "";
    String str_name = "";
    String str_email = "";
     string str_shenfen = "";

    public const int LOGON32_LOGON_INTERACTIVE = 2;
    public const int LOGON32_PROVIDER_DEFAULT = 0;
    WindowsImpersonationContext impersonationContext;
    [DllImport("advapi32.dll")]
    public static extern int LogonUserA(String lpszUserName,
    String lpszDomain,
    String lpszPassword,
    int dwLogonType,
    int dwLogonProvider,
    ref IntPtr phToken);
    [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int DuplicateToken(IntPtr hToken,
    int impersonationLevel, ref IntPtr hNewToken);
    [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern bool RevertToSelf();
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    public static extern bool CloseHandle(IntPtr handle);
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnok_Click(object sender, EventArgs e)
    {
        ///如果页面输入合法
        if (Page.IsValid == true)
        {   ///定义类并获取用户的登陆信息  
            // if (impersonateValidUser(Convert.ToString(txteid.Text.Trim()), "your domain", Convert.ToString(txtpsw.Text.Trim())))
          //   {
                      IISAuthUser = Convert.ToString(txteid.Text.Trim());

            IUser user = new User();
            SqlDataReader recu = user.GetUserLoginL(IISAuthUser);
            ///判断用户是否合法
            if (recu.Read())
            {
                str_userId = recu["UserID"].ToString();
                str_userName = recu["UserName"].ToString();
                str_name = recu["Name"].ToString();
                str_email = recu["email"].ToString();
                str_shenfen = recu["shenfen"].ToString();
               Label1.Text = "欢迎您,   " + str_name;
            }


            recu.Close();

            ///验证用户合法性,并跳转到系统平台
            if ((str_userId != null) && (str_userId != ""))
            {
                Session["UserID"] = str_userId;
                Session["UserName"] = str_userName;
                Session["Name"] = str_name;
                Session["email"] = str_email;
                Session["shenfen"] = str_shenfen;


                switch (Convert.ToString(Session["shenfen"]))
                {
                    case "staffer":
                        Session["title"] = "Fill In Purchase Order";
                        Response.Redirect("~/main.aspx?gl=apply");
                        break;
                    default:

                        Session["title"] = "Approve Purchase Order";
                        Response.Redirect("~/approve.aspx");
                        break;
                }
            }
            else
            {
                Label1.Text = "无授权用户,请联系IT部开通!";
            }
            //
        }
        else
        {
                      Label1.Text = "无网络帐号,请联系IT部申请开通!";
        }
    //    }
    }
    private bool impersonateValidUser(String userName, String domain, String password)
    {
        WindowsIdentity tempWindowsIdentity;
        IntPtr token = IntPtr.Zero;
        IntPtr tokenDuplicate = IntPtr.Zero;
        if (RevertToSelf())
        {
            if (LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
            LOGON32_PROVIDER_DEFAULT, ref token) != 0)
            {
                if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
                {
                    tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
                    impersonationContext = tempWindowsIdentity.Impersonate();
                    if (impersonationContext != null)
                    {
                        CloseHandle(token);
                        CloseHandle(tokenDuplicate);
                        return true;
                    }
                }
            }
        }
        if (token != IntPtr.Zero)
            CloseHandle(token);
        if (tokenDuplicate != IntPtr.Zero)
            CloseHandle(tokenDuplicate);
        return false;
    }
    private void undoImpersonation()
    {
        impersonationContext.Undo();
    }
}
 

分享到:
评论

相关推荐

    C#最全基类源码(包括ASP.NET类库、读取AD域里用户名或组、Common类库、DotNet基础类大全、SqlHelper基类、字符串加密)

    这个压缩包中的资源提供了丰富的C#基类源码,涵盖了ASP.NET类库、Active Directory(AD)用户和组的读取、通用(Common)类库、.NET基础类的全面集合、SqlHelper数据库操作基类以及字符串加密方法。下面我们将详细探讨...

    C#读取AD域的组织结构和用户

    本文将深入探讨如何使用C#编程语言来读取AD域中的组织结构和用户信息。C#提供了丰富的类库,如System.DirectoryServices命名空间,使得与AD进行交互变得相对简单。 首先,我们需要理解AD的组织结构。AD域是基于树形...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    第3章 ASP.NET 2.0常用服务器控件 3.1 使用基本控件 3.1.1 TextBox控件的应用 3.1.2 Label控件的应用 3.1.3 DropDownList和ListBox控件应用 3.1.4 CheckBOX和CheckBoxList控件应用 3.1.5 RadioButton和...

    asp.net总结不错

    它允许开发者利用C#等语言编写服务器端代码,并通过.NET框架提供丰富的类库支持,简化了Web应用开发过程。ASP.NET提供了多种功能模块,如Web Forms、MVC(Model-View-Controller)和Web API等,满足不同场景下的需求...

    asp.net类库,读域名,Common类库,字符串加密等

    其次,`C#读取AD域里用户名或组`涉及到的是Active Directory(AD)服务的交互。AD是一种目录服务,常用于管理网络中的用户、计算机和其他资源。通过`C#`,我们可以利用`System.DirectoryServices`命名空间的类来查询...

    使用Azure Active Directory和OpenID Connect在ASP.NET Core 2.0中进行身份验证和授权

    本文将深入探讨如何利用Azure Active Directory(Azure AD)和OpenID Connect在ASP.NET Core 2.0框架中实现这一目标。Azure AD是一种云身份管理解决方案,它允许开发人员构建安全的应用程序并连接到全球数百万个组织...

    asp.net 2.0简单广告管理系统

    根据给定的文件信息,我们可以深入探讨ASP.NET 2.0简单广告管理系统的实现细节,以及其中涉及到的关键技术点。 ### ASP.NET 2.0框架介绍 ASP.NET 2.0是微软在2005年发布的一个版本,它是.NET Framework的一部分,...

    ASP.NET 2.0 Caching

    ### ASP.NET 2.0 缓存技术详解 #### 一、概述 ASP.NET 2.0中的缓存技术主要用于提升Web应用的性能。当一个网页频繁被访问时,通过缓存整个网页或部分数据,可以显著提高响应速度。本文将详细介绍ASP.NET 2.0中的几...

    C#常用的帮助类库.zip

    2. C#读取AD域里用户名或组:在企业环境中,Active Directory(AD)域服务通常用于用户身份验证和权限管理。C#中可以通过`System.DirectoryServices`命名空间与AD交互,获取域中的用户信息或用户所在的组。例如,`...

    C#基类整理

    2. **C#读取AD域里用户名或组**:Active Directory(AD)是Windows操作系统中的目录服务,用于存储和管理网络资源。在C#中,可以使用System.DirectoryServices命名空间的类来与AD交互,如DirectoryEntry和...

    收集的C#基类比较全(Common类库SqlHelper基类DotNet基础类大全).zip

    收集的C#基类比较全(Common类库SqlHelper基类DotNet基础类大全): 包含有: ASP.NET类库 C#读取AD域里用户名或组 Common类库 DotNet基础类大全 SqlHelper基类 字符串加密

    C#.NET的SSO单点登录BLL部分

    在C#.NET中,可以使用库如iTextSharp或Apache POI来读取PDF,然后将其内容转换成Word文档格式。 5. 异常处理和安全性: 在实现SSO时,应考虑异常处理,确保即使在身份验证过程中发生错误,也能提供适当的反馈。...

    C# 基类 aspx net 常用类

    这里我们将深入探讨C#基类、ASP.NET中的常用类以及与之相关的字符串加密、SqlHelper基类、DotNet基础类大全、Common类库和AD域(Active Directory)的使用。 首先,C#基类是指C#中的一些基本类型和类,如System....

    c#常用基础类

    2. C#读取AD域里用户名或组:Active Directory(AD)是Windows环境下的目录服务,用于存储和管理网络资源。C#提供了System.DirectoryServices命名空间,其中的DirectoryEntry和DirectorySearcher类可用于查询AD域中...

    C#3.0的集成方法和第三方控件(源码)

    包含C#3.0的所有集成方法、只需调用。注释详细、以及常用的一些第三方控件。 共有ASP.NET类库 C#读取AD域里用户名或组 Common类库 DotNet基础类大全 SqlHelper基类 字符串加密 里面N多的方法。

    c#工具类源码大全

    2. C#读取AD域里用户名或组: 活动目录(Active Directory, AD)是微软的目录服务,用于存储和管理网络资源。C#提供了System.DirectoryServices命名空间,其中的DirectoryEntry和DirectorySearcher类可以用来查询AD...

    C#开发常用基类

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发ASP.NET应用程序时。"C#开发常用基类"这个主题涵盖了多个重要的知识点,包括但不限于类库的创建与使用、Active Directory(AD)交互、通用(Common)类库的构建...

    使用ASP.NET Core Web API和Azure SQL数据库构建REST服务

    在本文中,我们将深入探讨如何使用ASP.NET Core Web API与Azure SQL数据库来构建高效、可靠的RESTful服务。ASP.NET Core Web API是微软提供的一种用于构建HTTP服务的强大框架,而Azure SQL数据库则是云托管的关系型...

    DotNet工程师必懂的20道题

    应用程序域(AppDomain)是.NET运行时环境的一部分,它为应用程序提供了一个边界清晰的执行环境。每个应用程序域都有自己的加载器、配置和资源管理机制,这有助于隔离应用程序,防止它们相互干扰。CLR(Common ...

    C#公告类库

    2.C#读取AD域里用户名或组 ... 3.Common类库 ... 4.DotNet基础类大全 Chart图形 Cookie&Session&Cache CSV文件转换 DEncrypt DLL FTP操作类 JS Json Mime PDF ResourceManager XML操作类 弹出消息类 ...

Global site tag (gtag.js) - Google Analytics