C#实现的WINDOWS登录功能示例
作者:dodo-yufan 发布时间:2022-09-04 05:10:03
标签:C#,WINDOWS,登录
本文实例讲述了C#实现的WINDOWS登录功能。分享给大家供大家参考,具体如下:
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.Runtime.InteropServices;
using System.Security.Principal;
namespace yutest
{
public partial class _Default : System.Web.UI.Page
{
[DllImport("advapi32.dll", CharSet = CharSet.Auto)]
public static extern bool LogonUser(string lpszUsername,string lpszDomain,string lpszPassword,int dwLogonType,int dwLogonProvider,out int phToken);
protected void Page_Load(object sender, EventArgs e)
{
string aaa = System.Threading.Thread.CurrentPrincipal.Identity.Name;
//string bbb = System.Threading.Thread.CurrentPrincipal.Identity.n;
//System.Environment.UserDomainName
//System.Environment.UserName
}
protected void Button1_Click(object sender, System.EventArgs e)
{
//验证用户的输入是否为空
if (tDomain.Text.Trim().Length > 0 && tUserName.Text.Trim().Length > 0&& tPassword.Text.Trim().Length > 0)
{ //调用函数Login(string UserName, string Password, string Domain)
//实现Windows登录
if (Login(tUserName.Text.Trim(), tPassword.Text.Trim(),tDomain.Text.Trim()) == true)
{ //显示登录成功信息
LoginMsg.Text = "登录成功!!!";
LoginMsg.Visible = true;
return;
}
else
{ //显示登录失败信息
LoginMsg.Text = "登录失败,请重新输入用户名称、密码及其系统域名!!!";
LoginMsg.Visible = true;
}
}
}
private bool Login(string UserName, string Password, string Domain)
{ //获取用户名称和系统域名
string text1 = Domain.Trim();
string text2 = UserName.Trim();
text2 = text2.Replace("/", @"\"); //处理符号“/”
int num1 = text2.IndexOf('\\'); //获取符号“\”的索引
if (num1 != -1)
{ //格式化用户名称和系统域名
text1 = text2.Substring(0, num1);
text2 = text2.Substring(num1 + 1);
}
else
{ //格式化用户名称和系统域名
num1 = text2.IndexOf('@');
if (num1 != -1)
{
text1 = text2.Substring(num1 + 1);
text2 = text2.Substring(0, num1);
}
}
//调用函数AuthenticateUser()实现用户Windows登录
return AuthenticateUser(text2, Password.Trim(), text1);
}
private bool AuthenticateUser(string UserName, string Password,string Domain)
{ //设置用户登录成功的标志
bool flag1 = false;
try
{
int num1; IntPtr ptr1;
//调用Windows登录的API
if (!LogonUser(UserName, Domain, Password, 2, 0, out num1))
{ //返回登录结果
return flag1;
}
//调用.NET中的Windows登录
ptr1 = new IntPtr(num1);
WindowsIdentity identity1 = new WindowsIdentity(ptr1);
WindowsPrincipal principal1 = new WindowsPrincipal(identity1);
HttpContext.Current.User = principal1;
//设置系统Cookie和重定向页面
FormsAuthentication.SetAuthCookie(principal1.Identity.Name, false);
FormsAuthentication.RedirectFromLoginPage(UserName, false);
flag1 = true;
}
catch (Exception) { }
return flag1;
}
}
}
希望本文所述对大家C#程序设计有所帮助。
0
投稿
猜你喜欢
- properties和yml的区别这几天刚好看到Spring Boot当中有两种配置文件的方式,但是这两种配置方式有什么区别呢?proper
- 本文为大家分享了自己写的一个Pager分页组件,WebForm,Mvc都适用,具体内容如下分页控件其实就是根据链接在页面间传递参数,因为我看
- 前言植物大战僵尸的数据文件是存储在本地的dat文件当中,修改在本地的dat文件就可以修改到游戏中的数据。之前使用二进制编码工具Hex Edi
- 以前,如果我们希望构建支持foreach枚举的自定义集合,只能实现IEnumerable接口(可能还有IEnumerator()),返回值还
- 一、重载 1、重载示意 重载(Overload)是重新加载的意思,指的是同一个类中同名,但是参
- Javaweb开发环境的配置也是比较繁琐的一件事情,虽然理论上使用记事本,完全可以写出一个Javaweb工程,但是在团队大型开发的Javaw
- 降低springcloud版本,改成Hoxton.SR5就好了,再次改成Hoxton.SR12,也不报错了,很奇怪。也发现gateway版本
- 我发现网上许多讲解javaweb 项目 SSM(Spring,SpringMVC,Mybatis)配置的时候有些重点没有提到,一下我会贴上一
- 一、封装一个工具类1、简易版package net.aexit.construct.acceptance.websky.utils;impo
- 本文实例讲述了C#类中static变量用法。分享给大家供大家参考。具体分析如下:先来看一段代码:using System; namespac
- 以前就遇到过这个问题,今天重新拾起来。跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来:方法1:(直接xm
- 最近在研究android自定义控件属性,学到了TypedArray以及attrs。大家也可以结合《理解Android中的自定义属性》这篇文章
- 本文实例讲述了C#实现图形位置组合转换的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.C
- 关于logback日志的详解见这位仁兄的博客:Spring Boot-日志配置(超详细)我在这就开门见山直接介绍我们项目日志的配置使用吧!~
- 如下:public static void CreateConfig(){ //c#可以添加内置的app.conf
- 进程间图怎么传递图形buffer写这篇文章的目的:讲解 进程间图怎么传递图形buffer的最近研究图形缓存怎么在进程之间传递的,谷歌了所有的
- 微信支付最近公司要在微信公众号上做一个活动预报名,活动的门票等需要在微信中支付。微信支付前的准备微信支付需要一个微信支付商务号(https:
- 泛型方法是使用类型参数声明的方法,如下所示:static void Swap<T>(ref T lhs, ref T rhs){
- 本文实例讲述了Java实现的质因数分解操作。分享给大家供大家参考,具体如下:这里演示java通过递归实现质因数分解,代码如下:import
- 本文实例展示的是一个自定义的定时器组件,有别于.NET Framework里面提供的几个Timer。首先说说该组件开发背景,发现现在手头上的