日期:2014-05-20  浏览次数:20404 次

form验证的本质的问题?
form验证的本质的问题?哪里有文章详细介绍了form验证的本质问题?url   return,同服务器单一登陆等等问题。

------解决方案--------------------
asp.net中使用基于角色的身份Forms验证,大致分为四个步骤
1.配置系统文件web.config
<system.web>
<authentication mode= "Forms " >
<forms name= ".yaoCookies " loginUrl= "/duan/Manage/login.aspx " protection= "All "
timeout= "20 " path= "/ " />
</authentication>
</system.web>
<forms> 标签中的name表示指定要用于身份验证的 HTTP Cookie. 默认情况下,name 的值是 .ASPXAUTH。采用此种方式验证用户后,以此用户的信息建立一个FormsAuthenticationTicket类型的身份验证票,再加密序列化为一个字符串,最后将这个字符串写到客户端的name指定名字的Cookie中.一旦这个Cookie写到客户端后,此用户再次访问这个web应用时会将连同Cookie一起发送到服务端,服务端将会知道此用户是已经验证过的.
<forms> 标签中的loginurl指没有经过身份验证的用户将会自动的定向到loginurl所指向的路径. 如果验证用户有效,则生成同此用户对应的身份验证票,写到客户端的Cookie,最后将浏览器重定向到用户初试请求的页面.其中用System.Web.Security.FormsAuthentication.RedirectFromLoginPage ()方法实现重定向.
<forms> 标签中的timeout和path,是提供了身份验证票写入到Cookie过期时间和默认路径
2.在受保护的文件夹如Manage下创建一web.config文件,内容如
<configuration>
<!--指定对整个Manage目录的访问权限-->
<system.web>
<authorization>
<!--多个角色用,分隔-->
<allow roles= "admin,user "/>
<deny users= "* " />
</authorization>
</system.web>

<!--也可控制某个页的权限

<location path= "AnnounceList.aspx ">
<system.web>
<authorization>
<allow roles= "admin "/>
<deny users= "* " />
</authorization>
</system.web>
</location>

<location path= "ConfigInfo.aspx ">
<system.web>
<authorization>
<allow roles= "users "/>
<deny users= "* " />
</authorization>
</system.web>
</location>

-->
</configuration>
注:此配置内容也可以加入到系统的web.config文件中,注意加入位置:
........
</system.web>

<location path= "Manage/AnnounceList.aspx ">
<system.web>
<authorization>
<allow roles= "admin "/>
<deny users= "* " />
</authorization>
</system.web>
</location>

</configuration>


------解决方案--------------------
form验证就是基于身份验证cookie的

RedirectFromLoginPage做两件事
1、SetAuthCookie
2、Redirect,目标是url参数ReturnUrl的值