This posting is provided "AS IS" with no warranties, and confers no rights.
ASP.NET Profile属性
作用:
存储和使用唯一与用户对应的信息
展现个人化版本的Web应用程序
用户的唯一身份标识在再次访问时识别用户
ASP.NET Profile如何工作
你的Web应用程序运行时,ASP.NET创建一个从ProfileBase类动态继承下来的动态生成出来的ProfileCommon类。动态ProfileCommon类包含了你在Web应用程序配置文件中指定的Profile属性所拥有的字段。一个动态ProfileCommon类的实例被设置成了当前HttpContext的Profile属性,并可以在应用程序的各个页面中使用。
ASP.NET属性的用户身份
ASP.NET用户Profile特性被设计用来为唯一当前用户提供信息。Profile可以与认证用户和匿名用户同时使用。
认证用户
默认地,一个用户Profile与当前HTTP上下文(可通过System.Web.HttpContext.Current访问)中的User属性中存储的用户身份关联。用户身份由如下因素决定:
· ASP.NET表单审核系统,成功审核后设置用户身份。
· Windows或者Passport审核,成功审核后设置用户身份。
· 自定义审核,你管理用的信用凭证并手动设置用户身份。
ASP.NET表单审核包括创建一个Login表单并提示请求用户凭证。你可以通过使用Login控件创建Login表单和实现无编码的表单审核。
匿名用户
当你未经过登陆而在Web应用程序中浏览时,持有和使用的是匿名用户身份。这种用户身份的用户名是一个GUID字符串。可以通过用户迁移方法的重载将匿名用户转变为审核用户,实际上是为匿名用户生成Profile和相应的Cookie,不过维持的状态保存在本地电脑,如果Cookie过期或者使用其它电脑就可能导致信息丢失。
开发相关问题:
ASP.NET Profile属性使用Form审核机制,通过Cookie维持状态,可以保证不受会话超时影响,当然也可以设定为Sliding Expire。ASP.NET Profile属性所持有身份Cookie的超时时间需要在Web.config文件中的forms元素上设置timeout属性,有值的区间限制,不过可以通过设置一个较大的值来维持一个“永久”的Profile。其实Cookie超时时间过长是有安全隐患的,不过为了满足一些需求只好使用这种方法,但记得要加密Cookie并尽量使用SSL连接保持Cookie的安全性。
ASP.NET Profile属性的相关字段和Provider需要在Web.config文件中进行设置。而关键在于Provider,默认使用的是轻量级数据库(本地数据库文件)来支持Profile属性,但是如果是企业级开发,注意需要使用aspnet_regsql命令去生成数据库,当然这个数据库可以是已经存在的数据库,方便开发者开发已存在系统的身份验证和审核功能。
ASP.NET Profile的另一个功能是因为数据库存储了Web应用服务器的各个Web应用程序的根和与其对应的身份,所以也被用来实现SSO。