ASP.net Application 中使用域用户登录-阿里云开发者社区

开发者社区> fanr_zh> 正文

ASP.net Application 中使用域用户登录

简介: 转自:http://weblogs.3322.org/   现在做的一个程序中要求ASP.net 程序可以使用已经存在的域用户来登录(而且为了与其它程序界面一致一定要使用 Forms 登录),查找了一些相关的资料发现还是可以实现的。
+关注继续查看

转自:http://weblogs.3322.org/   
现在做的一个程序中要求ASP.net 程序可以使用已经存在的域用户来登录(而且为了与其它程序界面一致一定要使用 Forms 登录),查找了一些相关的资料发现还是可以实现的。

   主要还是依靠 advapi32.dll 中的 LogonUser API 函数。 

img_a6339ee3e57d1d52bc7d02b338e15a60.gifusing System.Web.Security;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using System.Runtime.InteropServices;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
img_a6339ee3e57d1d52bc7d02b338e15a60.gif[DllImport(
"advapi32.dll", CharSet=CharSet.Auto)]
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
public static extern int LogonUser(String lpszUserName,
img_a6339ee3e57d1d52bc7d02b338e15a60.gifString lpszDomain,
img_a6339ee3e57d1d52bc7d02b338e15a60.gifString lpszPassword,
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
int dwLogonType,
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
int dwLogonProvider,
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
ref IntPtr phToken);
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
public const int LOGON32_LOGON_INTERACTIVE = 2;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
public const int LOGON32_PROVIDER_DEFAULT = 0;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
void Login_Click(Object sender, EventArgs E)
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gifIntPtr token 
= IntPtr.Zero;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif
if(LogonUser(UserName.Value,
img_33d02437d135341f0800e3d415312ae8.gifUserDomain.Value,
img_33d02437d135341f0800e3d415312ae8.gifUserPass.Value,
img_33d02437d135341f0800e3d415312ae8.gifLOGON32_LOGON_INTERACTIVE,
img_33d02437d135341f0800e3d415312ae8.gifLOGON32_PROVIDER_DEFAULT,
img_33d02437d135341f0800e3d415312ae8.gif
ref token) != 0)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gifFormsAuthentication.RedirectFromLoginPage(UserName.Value,
img_33d02437d135341f0800e3d415312ae8.gifPersistCookie.Checked);
img_105a1e124122b2abcee4ea8e9f5108f3.gif}

img_33d02437d135341f0800e3d415312ae8.gif
else
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.giflblResults.Text 
= "Invalid Credentials: Please try again";
img_105a1e124122b2abcee4ea8e9f5108f3.gif}

img_05dd8d549cff04457a6366b0a7c9352a.gif}

img_a6339ee3e57d1d52bc7d02b338e15a60.gif


   其它方面的使用与普通的forms 程序没有太大的区别,也许还有更好的方法。

附注:技术的连贯性体现

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#使用系统的“显示桌面”功能(Shell.Application)
原文 C#使用系统的“显示桌面”功能(Shell.Application) 在 Windows 系统的 任务栏 上的 快速启动栏 里,通常有一个图标  ,点击这个图标,就会切换到桌面。这个图标实际是一个 “Windows Explorer Command” ,用记事本打开这个文件,我们看到如下的内容: [Shell] Command=2 IconFile=explorer.
846 0
从Windows以AD域用户身份挂载使用阿里云SMB协议文件系统
在完成AD域接入之后,用户即可开始以AD域用户身份挂载使用阿里云SMB协议文件系统了。本文介绍了几种SMB文件系统的挂在方式以及简单的ACL特性使用方法的演示。
4965 0
Mac下终端使用密钥登录服务器
可行方法: mac终端输入 ssh-keygen 因为mac系统是类unix系统,linux系统是unix系统演变来的,所以呢,相当于在一个linux系统登录另外一个linux系统, 基本命令还是一样的。
2594 0
+关注
fanr_zh
数据库技术专家
271
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载