100分求教一个asp.net用户认证的问题

patann 2010-04-03 01:24:39
请问以下问题怎样实现?
某公司用AD(域)管理员工电脑账号,现有一个站点,
当公司内部员工访问时,不需要再认证(因为内部员工登录电脑的时候,已通过域认证)
当非公司员工访问时,跳转到用户登录界面,需要用户输入正确的用户名和密码后才允许访问。
...全文
168 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanlose2 2010-04-06
  • 打赏
  • 举报
回复
鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎鼎
ouzui 2010-04-06
  • 打赏
  • 举报
回复
学习中,路过顶贴!!!!
YnSky 2010-04-06
  • 打赏
  • 举报
回复
<authentication mode="Windows"/>
User.Identity.Name 得到域名和用户名. LogonUser登录
随风落梦 2010-04-06
  • 打赏
  • 举报
回复
通过IP判断是内网IP还是外网IP来实现吧
patann 2010-04-06
  • 打赏
  • 举报
回复
如果用<authentication mode="Windows" />并且把iis设成集成windows认证,那,当非公司员工访问时,就会弹出windows自带的那个需要输入用户名和密码的那个框。
如果不用<authentication mode="Windows" />或不把iis设成集成windows认证,用User.Identity.Name 就会取不到公司内部员工登录访问时的域用户名。
请问大家有没有解决办法呢?
wosizy 2010-04-06
  • 打赏
  • 举报
回复
域用户验证

你这种问题显然调用windowsAPI效果最好,这里需要调用advapi32.dll的LogonUser方法



示例:

using System.Runtime.InteropServices;



ExampleClass

{

//调用Win32API Import advapi32.dll
[DllImport("advapi32.dll")]
private static extern bool LogonUser( string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);



private bool ValidateUserAccount()

{

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=""; //域 如:officedomain

string domainAccount=""; //域帐号 如:administrator

string domainPassword="";//密码


bool checkok = LogonUser(domainName, domainAccount, domainPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);



return checkok;

}

}



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

当然,如果是在web 里,也就是Asp.net中可以通过配置web config来拿到域信息:

1. 在web.config中设置<authentication mode="Windows"/>
2. 在IIS-默认的Web站点-虚拟目录-属性-目录安全性-编辑中选择 "集成Windows验证",注意"匿名访问"一定不要选
3. 在asp.net中使用 User.Identity.Name 就可以得到域名和用户名.

Jackienan 2010-04-06
  • 打赏
  • 举报
回复
内网登录跟本不需要验证域名,2楼的做法就可以了,如果还有要求的话可以结合mode="windows"和mode="form",因为web.config是可以嵌套使用
bibixiaozhu 2010-04-06
  • 打赏
  • 举报
回复
问题已经解决、、方法同上
「已注销」 2010-04-06
  • 打赏
  • 举报
回复
帮顶
patann 2010-04-06
  • 打赏
  • 举报
回复
有没有人做过类似的呢?这问题困扰我很久啦
patann 2010-04-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
<authentication mode="Windows"/>
User.Identity.Name 得到域名和用户名. LogonUser登录
[/Quote]

IIS需要设成集成windows登录吗?如果iis不设成集成windows登录,user.identity.name是取不到域名和用户名的,如果iis设成集成windows登录,则,就会直接弹出windows自带的那个登录窗口了。
xxingmen 2010-04-04
  • 打赏
  • 举报
回复
web.config中
身份验证<authentication mode="Windows" /> 再配置相关属性,如:Default=“Default.aspx”Login="Login.aspx"
罗纳尔迪尼奥 2010-04-04
  • 打赏
  • 举报
回复
麻烦说详细点,别说的那么简单···
holyfield021 2010-04-04
  • 打赏
  • 举报
回复
web.config中的<authentication mode="Windows" /> 就可以了
duxj007 2010-04-03
  • 打赏
  • 举报
回复
学习中,路过顶贴!!!!
hxn1987420 2010-04-03
  • 打赏
  • 举报
回复
学习中,路过顶贴!!!!
Jing3_zhang 2010-04-03
  • 打赏
  • 举报
回复
就是一个判断就搞定了嘛!楼上的已经给你答案了。呵呵!
wuyq11 2010-04-03
  • 打赏
  • 举报
回复
<authentication mode="Windows"/>
User.Identity.Name 得到域名和用户名. LogonUser登录
cssGarden 2010-04-03
  • 打赏
  • 举报
回复
web.config中
身份验证<authentication mode="Windows" /> 再配置相关属性,如:Default=“Default.aspx”Login="Login.aspx"
还想懒够 2010-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 newdigitime 的回复:]
web.config中

<authentication mode="Windows" />
[/Quote]

再配合ASP.NET的Form认证,去判断User.Identity.Name
加载更多回复(3)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧