asp.net中web用户身份验证的一种方式。
2015-02-28 09:29
531 查看
之间时间有限,往往实现了功能以后,就不去细究实现的原理,以至于很多时候都是一知半解。既然开始写blog了,那就搞明白这些东西。
最近的项目需要用到asp.net中web的用户身份验证,只允许通过验证的人看到他自己的信息。
之前实现过一次,但是没有细究,以至于现在来做的话,还得回去看相应的代码。
其实关键的代码,就在这两部分:
<authentication mode="Forms">//标示,authentication用的模式是forms。authentication mode="Forms"
标签内的是包含验证的具体细节:
1、验证页的名字,2、验证也的url,开放类型,3、path,这个参数还不是很了解,后面查一下。
timeout标示验证信息的在用户不操作后的有效时间。
<authortization>标签是授权内容
这里,只添加了一条,就是对匿名身份用户的拒绝:
<deny users="?"/>
好了,我准备在新的项目里面,手动打入这些信息,来完整基本的用户身份验证和授权。
不过打开新项目的web.config后看到如下内容:
<?xml version="1.0" encoding="utf-8"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
首先来看一下什么是web.config
度娘来助:
Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息(如最常用的设置ASP.NETWeb 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
在运行时对Web.config文件的修改不需要重启服务就可以生效(注: 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
我们知道了web.config的作用了,至于里面的具体的设置,下面来看,不过需要足矣的地方是:每个目录都可以有一个web.config。这说明其实IIS的保护机制其实是以设置文件夹的可访问性来实行的(不知道我的这个理解是否正确,暂时就这样延伸理解吧)
另外就是web.config的修改不需要重启程序,就可以生效。
有点傻眼。这些标签,我并不能完全理解其意思。好了
下面来开始百度、谷歌和bing。
首先<?xml version="1.0" encoding="utf-8"?>
说明此文件是xml,希望用到这个文件的对象,按照xml来处理这个文件。并请按照1.0版本和encoding="utf-8"的方式来解码文件中的信息。
xml是一种通用的,也许会是将来在不同平台,不同设备,甚至是不同类型的硬件之间进行交换,而不必去管,你是用的安卓,IOS,windows或是其他智能家居之类上的设备等等。
再来看下一行:
<configuration>意思是设置的意思,我这里认为他是web.config的最外层标签()
以上是我自己的理解:度娘验证:以下所有的代码都应该位于 <configuration> 和 </configuration>
再来看<system.web>,
度娘:
4. <system.web>
<system.web>为.net应用程序的行为方式配置节点,该节点包含很多子节点,很多子节点已经由.net配置好了,这里我们只来看看一些重要的配置节点。
<customErrors>
1、一段实例:
<customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
2、
<compilation>只是软件系统的编译信息:实例:
<compilation debug="true" targetFramework="4.0" />
3、最感兴趣的问题:
验证:<authentication>节点
<authentication>节点控制用户对网站、目录或者单独页的访问,必须配合<authentication>节点一起使用
有四种方式:
Windows
使用Windows身份验证,适用于域用户或者局域网用户。
Forms 使用表单验证,依靠网站开发人员进行身份验证。
Passport 使用微软提供的身份验证服务进行身份验证。
None 不进行任何身份验证。好坏优劣暂时先一方,
下面继续来完成新项目中的验证。手动写,而不是复制黏贴。
<authentication mode="Forms">
<forms name="form1" defaultUrl="Default.aspx"></forms>
写上了这些,还需要什么内容呢?还需要添加保护模式和认证过期时间。
好的,我的验证邠写好了,再来看授权部分。即通过验证后的用户,可用有哪些权利。
写入<authorization>后又抓瞎:
本来以为会给authorization添加属性,不过看代码示例以后,只需要添加子标签即可,并且子标签不多,用的到的是<deny>和<allow>不过子标签内部怎么写?
继续看代码示例。
不过子标签<deny>和<allow>的属性会有比较多项目,暂时用的到的是user。其他暂时不看,毕竟,今天或明天需要交任务。
这里的<deny user="?">只是拒绝匿名用户。其实也没设置多少权限信息。
好了,到这里,简单的授权也实现了
但是当我验证的时候,出现如下问题:
URL 并确保其拼写正确。
请求的 URL: /login.aspx
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.5.27.0
问题解决了,不过解决的方式很奇怪,就是必须添加/login.aspx页面,
好吧,我妥协了,加入了这个界面。
另外,设置了验证和权限,就得有验证逻辑。
配合这个使用
System.Web.Security.FormsAuthentication.SetAuthCookie(“”, false);
再回头来看看这个函数的背后
不过我发现这其实是另外一个话题,那就是cookies
好吧,这个就放在后面的一个话题里面来说。
最近的项目需要用到asp.net中web的用户身份验证,只允许通过验证的人看到他自己的信息。
之前实现过一次,但是没有细究,以至于现在来做的话,还得回去看相应的代码。
其实关键的代码,就在这两部分:
<authentication mode="Forms">//标示,authentication用的模式是forms。authentication mode="Forms"
标签内的是包含验证的具体细节:
1、验证页的名字,2、验证也的url,开放类型,3、path,这个参数还不是很了解,后面查一下。
timeout标示验证信息的在用户不操作后的有效时间。
<authortization>标签是授权内容
这里,只添加了一条,就是对匿名身份用户的拒绝:
<deny users="?"/>
好了,我准备在新的项目里面,手动打入这些信息,来完整基本的用户身份验证和授权。
不过打开新项目的web.config后看到如下内容:
<?xml version="1.0" encoding="utf-8"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
首先来看一下什么是web.config
度娘来助:
Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息(如最常用的设置ASP.NETWeb 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
在运行时对Web.config文件的修改不需要重启服务就可以生效(注: 节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
我们知道了web.config的作用了,至于里面的具体的设置,下面来看,不过需要足矣的地方是:每个目录都可以有一个web.config。这说明其实IIS的保护机制其实是以设置文件夹的可访问性来实行的(不知道我的这个理解是否正确,暂时就这样延伸理解吧)
另外就是web.config的修改不需要重启程序,就可以生效。
有点傻眼。这些标签,我并不能完全理解其意思。好了
下面来开始百度、谷歌和bing。
首先<?xml version="1.0" encoding="utf-8"?>
说明此文件是xml,希望用到这个文件的对象,按照xml来处理这个文件。并请按照1.0版本和encoding="utf-8"的方式来解码文件中的信息。
xml是一种通用的,也许会是将来在不同平台,不同设备,甚至是不同类型的硬件之间进行交换,而不必去管,你是用的安卓,IOS,windows或是其他智能家居之类上的设备等等。
再来看下一行:
<configuration>意思是设置的意思,我这里认为他是web.config的最外层标签()
以上是我自己的理解:度娘验证:以下所有的代码都应该位于 <configuration> 和 </configuration>
再来看<system.web>,
度娘:
4. <system.web>
<system.web>为.net应用程序的行为方式配置节点,该节点包含很多子节点,很多子节点已经由.net配置好了,这里我们只来看看一些重要的配置节点。
<customErrors>
1、一段实例:
<customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
2、
<compilation>只是软件系统的编译信息:实例:
<compilation debug="true" targetFramework="4.0" />
3、最感兴趣的问题:
验证:<authentication>节点
<authentication>节点控制用户对网站、目录或者单独页的访问,必须配合<authentication>节点一起使用
有四种方式:
Windows
使用Windows身份验证,适用于域用户或者局域网用户。
Forms 使用表单验证,依靠网站开发人员进行身份验证。
Passport 使用微软提供的身份验证服务进行身份验证。
None 不进行任何身份验证。好坏优劣暂时先一方,
下面继续来完成新项目中的验证。手动写,而不是复制黏贴。
<authentication mode="Forms">
<forms name="form1" defaultUrl="Default.aspx"></forms>
写上了这些,还需要什么内容呢?还需要添加保护模式和认证过期时间。
好的,我的验证邠写好了,再来看授权部分。即通过验证后的用户,可用有哪些权利。
写入<authorization>后又抓瞎:
本来以为会给authorization添加属性,不过看代码示例以后,只需要添加子标签即可,并且子标签不多,用的到的是<deny>和<allow>不过子标签内部怎么写?
继续看代码示例。
不过子标签<deny>和<allow>的属性会有比较多项目,暂时用的到的是user。其他暂时不看,毕竟,今天或明天需要交任务。
这里的<deny user="?">只是拒绝匿名用户。其实也没设置多少权限信息。
好了,到这里,简单的授权也实现了
但是当我验证的时候,出现如下问题:
无法找到资源。
说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下URL 并确保其拼写正确。
请求的 URL: /login.aspx
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.5.27.0
问题解决了,不过解决的方式很奇怪,就是必须添加/login.aspx页面,
好吧,我妥协了,加入了这个界面。
另外,设置了验证和权限,就得有验证逻辑。
配合这个使用
System.Web.Security.FormsAuthentication.SetAuthCookie(“”, false);
再回头来看看这个函数的背后
不过我发现这其实是另外一个话题,那就是cookies
好吧,这个就放在后面的一个话题里面来说。
相关文章推荐
- ASP.NET的Web.config文件中可配置哪些身份验证方式
- ASP.NET Web 应用程序的身份验证方式
- asp.net的身份验证方式
- Asp.net(C#)中,怎么通过域验证用户身份?
- asp.net中的窗体身份验证(完整篇之四:获得用户数据)
- web.config 限定访问权限 Asp.net的身份验证有有三种
- asp.net用户身份验证时读不到用户信息的问题 您的登录尝试不成功。请重试。 Login控件
- asp.net forms 身份验证方式下跨域登录信息共享的实现方法
- ASP.NET 下web.config Forms身份验证的配置
- 总结asp.net的身份验证方式
- ASP.net的身份验证方式有哪些?分别是什么原理?
- asp.net的身份验证方式
- 在asp.net使用web.config身份验证
- asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
- asp.net身份验证方式|windows身份验证|forms验证
- asp.net的身份验证方式
- ASP.net的身份验证方式有哪些?分别是什么原理?
- ASP.NET中的身份验证方式
- asp.net中的窗体身份验证(完整篇之附录:web.config中相应节点详解)
- 开发日志:使用Asp.Net中的"Forms"验证方式,操作用户权限