成都创新互联专注于中卫网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供中卫营销型网站建设,中卫网站制作、中卫网页设计、中卫网站官网定制、小程序定制开发服务,打造中卫网络公司原创品牌,更为您提供中卫网站排名全网营销落地服务。
最近项目要调用其他人的登录API程序,其中涉及到了身份验证(之前没有用过ASP.NET的身份验证),开始调试时身份验证都是有值的,调试时
(PC-5\Administrator为本地计算机名字)
但是到了真正发布到IIS时,身份验证的值却没有了。后来查看了一些文章,才发现这是和ASP.NET的身份验证有关。
微软官方对ASP.NET的身份验证分为以下几种,
mode="[Windows|Forms|Passport|None]">其中属性描述为:
属性
说明
mode
必选的属性。
指定应用程序的默认身份验证模式。此属性可以为下列值之一。
值
说明
Windows
将 Windows验证指定为默认的身份验证模式。将它与以下任意形式的 Microsoft Internet信息服务 (IIS)身份验证结合起来使用:基本、摘要、集成 Windows身份验证 (NTLM/Kerberos)或证书。在这种情况下,您的应用程序将身份验证责任委托给基础 IIS。
Forms
将 ASP.NET基于窗体的身份验证指定为默认身份验证模式。
Passport
将 Microsoft Passport Network身份验证指定为默认身份验证模式。
None
不指定任何身份验证。您的应用程序仅期待匿名用户,否则它将提供自己的身份验证。
默认值为 Windows。
如果是使用身份验证为Windows,由于官方说将结合IIS进行身份验证,那么就要额外配置发布后的IIS,因为IIS默认为匿名用户登录,并不采用身份验证。所以如果是本地进行调试的话,身份验证就是使用本机的Windows身份,而发布到IIS的就是使用IIS的身份验证,但是IIS如果未配置身份认证,默认采用匿名登录,那么身份认证就不会起作用了。
测试代码:
if (HttpContext.Current.User.Identity.IsAuthenticated)
Label1.Text ="已验证,现在身份验证名字:" +HttpContext.Current.User.Identity.Name;
else
Label1.Text="未验证,现在身份验证名字:" + HttpContext.Current.User.Identity.Name;
发布到IIS服务器没有配置身份验证,出现的结果:
发布到IIS服务器并配置身份验证,会出现windows登录窗口,输入windows用户,
出现的结果是
通过上面的测试,基本上可以明白微软对ASP.NET的身份验证的Windows属性的使用。但是对于一般网站而言,并不希望为每个用户分配windows账户,所以这种验证仅适合少量安全用户的访问,并不适合大量的用户访问。
参考文献:http://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html#_label5
http://msdn.microsoft.com/zh-cn/library/ff647076.aspx
针对上述情况,微软提出了ASP.NET的身份验证属性Forms属性,主要针对表单验证。简单说,Forms身份认证就是为每个登录到网站的用户产生一个认证标识(一般为Cookie)。由于这种认证集成到网页表单的提交,对用户很方便。
具体的认证使用方法请参看:
http://www.cnblogs.com/xugang/archive/2010/12/08/1900135.html
http://www.xoc.net/works/tips/forms-authentication.asp
在这里还想说的是,之前由于我做的程序中使用了User.Identity.IsAuthenticated属性进行验证,在调试的时候还是没有产生身份验证。追查原因才发现原来在进行表单身份验证的时候是需要这个方法来产生表单验证信息的,即注册表单身份。
FormsAuthentication.SetAuthCookie(name, true);没有这个方法的话,就无法产生表单身份,而且根据文章http://www.cftea.com/c/2011/04/UQ1T0SIOTD34ZJOG.asp说注册表单身份后要进行跳转后才能生效。而对于解决User.Identity.IsAuthenticated==false或User.Identity.Name==string.empty的问题,可以参考文章
http://www.cnblogs.com/godwar/archive/2008/07/21/1247890.html
最后推荐各位遇到ASP.NET身份验证的问题的朋友,可以先看看这几篇文章,会很有收获。http://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591795.htmlhttp://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591796.htmlhttp://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591797.html
本文题目:ASP.NET身份验证的探讨
本文路径:http://cdxtjz.cn/article/gehddo.html