ASP.NET使用无Cookie的表单认证票据
ASP.NET
使用无Cookie的表单认证票据
默认情况下,forms authentication system将决定是将票据存储在cookies
collection里还是插入用户访问页面的URL里。所有主流的桌面浏览器,比如Internet
Explorer,Firefox,Opera,或Safari都支持cookies,但并非所有的移动设备都支持。
forms authentication system使用何种cookie策略,取决于
元素里的cookieless设置,它可以有如下四种配置:
.UseCookies——指定总是使用基于cookie的票据
.UseUri——指定从不使用基于cookie的票据
.AutoDetect——如果device
profile不支持cookies,就不使用基于cookie的票据;如果device
profile支持cookies,那么就运用一种探测机制来判断是否可以使用cookies.
.UseDeviceProfile——这是默认值,如果device
profile支持cookies,就使用基于cookie的票据,不运用探测机制。
其中,AutoDetect 和
UseDeviceProfile选项都依靠一个device
profile来判断是使用基于cookie还是无cookie的票据。ASP.NET有一个关于这种devices及其性能的数据库,比如某种
devices是否支持cookies,它支持那个版本的JavaScript等信息。每次,当一个device向服务器发出对某个页面的请求时,该请求
里将包含一
个名为“user-agent”的HTTP
header,用于表明device的类型。ASP.NET
将自动的把提供的user-agent字符串与数据库里相应的信息匹配起来。
注意:
该数据库
存储在很多的XML文件里.这些默认的device
profile文件,其路径为%WINDIR%\Microsoft.Net\Framework\v2.0.50727\CONFIG
\Browsers。你也可以在你应用程序的App_Browsers文件夹里添加自定义的文件,关于这方面的更多信息,请参阅文章《How To:
Detect Browser Types in ASP.NET Web Pages》
由于默认使用的是UseDeviceProfile选项.当访问站点的某个device不支
持cookies时,就站点就使用无cookie的票据.
在URL里对票据进行编码
当浏览器每次向某个站点发出请求时,用来存储信息的载体通常是Cookies。但如果访问站
点的device不支持Cookies的话,我们必须使用某种方法在客户端和服务器端传递票据,通常的做法是在URL里将cookie数据编码。
为了进行演示,我们将强迫站点使用无cookie的票据,为此我们将采用UseUri:
做了上述修改后,通过浏览器访问.当以匿名用户进行访问时,URL看起来和以前没什么区别,
相关文档:
@Register : Register a user control or class with alias to this page.
@Import: Import a namespace.
@Reference: Link user controls or other page to complile current page. 支持数据跨页面的传送
页面事件:PreInit(创建服务器控件), Init(初始化服务器控件的状态), InitComplete,PreLoad, Load, Lo ......
异常详细:
1. 错误列表没有记录,编译通过。
2. 显示输出:
“WebDev.WebServer.EXE”(托管): 已加载“C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll”,已跳过符号加载。已对模块进行了优化并启用了调试器选项“仅我的代码”。
“WebDev.WebServer ......
为每个用户存储配置信息 以前保存用户配置信息时用到的是session和cookie。 session会话结束,保存的个人信息就会丢失,而cookie在一定程度上存在安全隐患
asp.net 2.0引入的profile技术 可以很好的解决该问题。
强类型 长期保存 支持匿名用户
定义配置(profile)
<?xml version="1.0"?>
<c ......
在ASP.NET 1.1中,要做1个弹出的确认对话框的话,一般是在服务端的代码中这样写:
private void Page_Load(object sender, System.EventArgs e)
{
btnClick.Attributes.Add("onclick", "return confirm('Are you sure?');");
// Button1.Attributes["OnClick"] = "return conf ......