温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET身份验证的探讨

发布时间:2020-07-29 03:34:27 来源:网络 阅读:694 作者:ljf52czz 栏目:编程语言

最近项目要调用其他人的登录API程序,其中涉及到了身份验证(之前没有用过ASP.NET的身份验证),开始调试时身份验证都是有值的,调试时

ASP.NET身份验证的探讨

 PC-5\Administrator为本地计算机名字)

但是到了真正发布到IIS时,身份验证的值却没有了。后来查看了一些文章,才发现这是和ASP.NET的身份验证有关。

     微软官方对ASP.NET的身份验证分为以下几种,
<authentication 
   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服务器没有配置身份验证,出现的结果:


ASP.NET身份验证的探讨

发布到IIS服务器并配置身份验证,会出现windows登录窗口,输入windows用户,

ASP.NET身份验证的探讨

出现的结果是


ASP.NET身份验证的探讨

       通过上面的测试,基本上可以明白微软对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.html
http://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591796.html
   http://www.cnblogs.com/Gavinzhao/archive/2009/10/29/1591797.html
 

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI