asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师
上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profile信息。
第一步:设置配置文件
第二步:得到所有的用户
MembershipUserCollection users = Membership.GetAllUsers();
这里用到了Membership类的GetAllUsers()方法,此内容已经在“用户与角色管理”中说过,不再赘述。
第三步:编历users集合,取了每一个用户的Profile
foreach (MembershipUser singleUser in Users)
{
ProfileCommon userprofile = Profile.GetProfile(singleUser.UserName);
Response.Write(userprofile.name);
Response.Write(userprofile.age);
Response.Write(userprofile.school);
}
读取匿名用户的Profile
匿名用户也有Profile?答案是肯定的。前面说过,asp.net2.0加入了一个匿名跟踪机制,它可以产生一个独一无二的GUID识别码附加到未经过验证的网页的Request中。
默认的“匿名身份识别”是disabled,因此如果要想让你的网站识别匿名用户需要在Web.Config文件中进行如下配置:
<system.web>
<anonymousIdentification enabled="true"/ >
</system.web>
设置完毕就可以通过this.Request.AnonymousID取出用户的GUID。
使用匿名用户Profile的场境:
1) 过去做购物网站时,我们将购物车放在Session中,但Session有一定的过期策略,一般为20分钟。如果我们逛了半小时才进行结账的话,那购物车的数据通过Profile保存是最好的。
2) 有人逛购物网站并不喜欢登录后再购买,而时逛着逛着发现一个好东西,这里再去登录购买的话就会让用户感到有点烦,尤其在网络速度比较慢的情况下。这时可以使用匿名身份对用户购买的东西进行记录,在结账的时候再让用户输入账号密码,进行结账。
使用匿名Profile有两个关键点:
1) 将anonymousIdentification的enable属性设为true
2) 将相应匿名保存的Profile字段属性也设为allowAnonymous="true"
使用匿名Profile存储信息:
第一步:将anonymousIdentification的enable属性设为true
<anonymousIdentification enabled="true" cookieless="UseCookies"></anonymousIdentification>
第二步:在Web.Config文件中将“前景色”与“背景色”两个属性设为allowAnonymous="true"
<profile>
<properties>
<add name="name" type="System.String"></add>
<add name="age" type="System.Int32"></add>
<add name="school" type="System.String"></add>
<group name="color">
<add name="forecolor" type="System.Drawing.Color" serializeAs="Binary" allowAnonymous="true"></add>
<add name="backcolor" type="System.Drawing.Color" serializeAs="Binary" allowAnonymous="true"></add>
</group>
</properties>
<profile>
第三步:
设置匿名用户的“前景色”和“背景色”
Profile.color.backcolor = Color.FromName(listBack.Text);
Profile.color.forecolor = Color.FromName(listFore.Text);
Label1.ForeColor = Profile.color.forecolor;
Label1.BackColor = Profile.color.backcolor;
第四步:查看aspnet_profile表中的内容,发现颜色被存进表中了。
匿名者的Profile向登录用户的迁移(Migration)
第一步:如上
第二步:如上
第三步:如上
第四步:在网站的Global.asax中添加下列代码:
void Profile_MigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
//取得匿名用户的ID
ProfileCommon anonyProfile = Profile.GetProfile(args.AnonymousID);
if ((anonyProfile.color.backcolor != null) && (anonyProfile.color.forecolor != null))
{
Profile.color.forecolor = anonyProfile.color.forecolor;
Profile.color.backcolor = anonyProfile.color.backcolor;
Profile.Save();
}
//删除匿名用户的Profile
ProfileManager.DeleteProfile(args.AnonymousID);
//清除匿名用户的Cookie或身份资料
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
用户登录时就会引发Profile_MigrateAnonymous事件将匿名用户迁移到用户的Profile
(车延禄)
收藏于 2007-07-03
asp.net2.0安全性(2)--用户个性化设置(2)--转载来自车老师的更多相关文章
- asp.net2.0安全性(2)--用户个性化设置(1)--转载来自车老师
在Membership表中可以存储一些用户的基本信息,但有的时候,我们需要记录的用户信息远远不止Membership表中提供的这些,如QQ.MSN.家庭住址.联系电话等等.那如何把这些用户信息记录到数 ...
- asp.net2.0安全性(1)--用户角色篇(类)--转载来自车老师
Membership.MembershipUser和Roles类 用户与角色管理在asp.net2.0中是通过Membership和Roles两个类来实现的. Membership:用户成员账号管理, ...
- asp.net2.0安全性(1)--用户角色篇(起篇)--转载来自车老师
安全管理的解决方案在.net1.1中几乎为一片空白,对于应用程序的验证与授权大部分的工作是开发人员自己编写代码,或者是借助企业库等工具来实现,此可谓.net1.1中的一大缺憾.在.net2.0中微软为 ...
- asp.net2.0安全性(3)--验证与授权--转载来自车老师
"验证"与"授权"是对网页资源安全管理的两道门. 验证(Authentication):检查用户是否是合法的用户.就像是网站大门口的保卫,服责验证使用的用户名和 ...
- asp.net2.0导出pdf文件完美解决方案【转载】
asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...
- asp.net2.0安全性(4)--Login系列控件--转载来自车老师
前面主要说了与安全相关的一系列的类,现在我们使用这些类就可以做出我们自己的安全系统了.其实微软的目的远不至于此,下面我们就来看一下微软为我们提供的Login系列控件. Login系列控件是微软为了简化 ...
- asp.net2.0安全性(1)--用户角色篇(代码实现1)--转载来自车老师
创建用户: MembershipCreateStatus mc; Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQ ...
- asp.net2.0安全性(1)--用户角色篇(代码实现2)--转载来自车老师
加载所有用户 MembershipUserCollection user = Membership.GetAllUsers(); listUser.DataSource = user; listUse ...
- Asp.Net2.0下C#环境 Login控件实现用户登录
原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码 <asp:Login ID="Login1" run ...
随机推荐
- poj 1979 Red and Black(dfs)
题目链接:http://poj.org/problem?id=1979 思路分析:使用DFS解决,与迷宫问题相似:迷宫由于搜索方向只往左或右一个方向,往上或下一个方向,不会出现重复搜索: 在该问题中往 ...
- BCB6.0是垃圾的二十条理由
我用的BCB6.0和windows2000 都是公司配的正版,我也有多年的开发经验. 1. IDE常常出现非法操作,有时重起动还会出错,须要重装BCB. 2. 自己主动完毕和智能提示功能超慢,慢到能够 ...
- POJ 1562(L - 暴力求解、DFS)
油田问题(L - 暴力求解.DFS) Description The GeoSurvComp geologic survey company is responsible for detecting ...
- 理解iOS 8中的Self Sizing Cells和Dynamic Type
http://www.cocoachina.com/ios/20140922/9717.html 在iOS 8中,苹果引入了UITableView的一项新功能--Self Sizing Cells,对 ...
- SqlServer字段说明查询(表基本信息查询)
--快速查看表结构(比较全面的) THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号 , col.name AS 列名 , ISNULL(ep.[v ...
- 一口一口吃掉Hibernate(八)——Hibernate中inverse的用法
一.Inverse是hibernate双向关系中的基本概念.inverse的真正作用就是指定由哪一方来维护之间的关联关系.当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之 ...
- 总结:js中4类修改样式的方法
前言 最近在写一个扩展右键菜单的插件,既然是插件,想着一步到位,把相关的style样式设置都丢进js文件中,直接加载一个js文件便可以使用该插件,所以今天就研究了下js批量的插入样式的方法,即addS ...
- 国产CPU走到十字路口:谁来取代英特尔芯片?(少写了一个OpenPower)
国内的几支CPU研发力量各自选择的指令体系都有自己的优点和问题,选择其中的哪一支都会有对应的成本和风险.最终谁能担大任,且拭目以待. 文 | 瞭望智库特约科技观察员 王强 用上内置国产CPU的个人电脑 ...
- 黑龙江省第七届大学生程序设计竞赛-Heap
描述 A heap is a full binary tree; for each node, its key is greater than its two sub-node’s key. Two ...
- Bertelsmann Asia Investments, 简称BAI
聚焦龙宇:贝塔斯曼的中国风险投资之路 _财经_腾讯网 贝塔斯曼亚洲投资基金(Bertelsmann Asia Investments, 简称BAI )