asp.net中web用户身份验证的一种方式。

之间时间有限,往往实现了功能以后,就不去细究实现的原理,以至于很多时候都是一知半解。既然开始写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="?">只是拒绝匿名用户。其实也没设置多少权限信息。

好了,到这里,简单的授权也实现了

但是当我验证的时候,出现如下问题:


无法找到资源。

说明: 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

好吧,这个就放在后面的一个话题里面来说。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值