这个是在vs2005以上版本中实现的,因为需要利用配置文件传(存)值。并且这里说的,可以为购物车项目服务
1:当web.config中mode="Windows"时,说明是window登陆,获取当前用户信息:
System.web.HttpContext context=system.web.HttpContext.Current;当前请求上下文
This.Lable1.text=context.user.Indentity.Name;//获取当前上下文用户名称
注:一般就是:计算机名/adminstrator
2:当web.config中mode="form"时,说明登陆模式是form形式,那么获取当前用户时有一个问题:form模式登陆的用户名是在程序运行时产生的一个用户名,form模式的用户名是保存cookies中的信息。
下面我们用一个实验演示:
首先在web.config中定义mode=”form”,并且定义:<forms name="nn" defaultUrl="login.aspx"></forms>
在login.aspx页面中, ,在登录按钮中写:
if (this.TextBox1.Text == "wang" && this.TextBox2.Text == "123")
{
System.Web.Security.FormsAuthentication.SetAuthCookie(this.TextBox1.Text, false);//为cookies赋值
Response.Redirect("Default.aspx");
}
在Default.aspx页面中的Page_Load中,
System.Web.HttpContext context = System.Web.HttpContext.Current; //当前HTTP请求上下文
this.lblUserName.Text = context.User.Identity.Name; //获取当前上下文用户名称。
在这里,为大家介绍一下,在购物车中,如何利用这些原理来统计或判断当前用户是否登录,进而为不同用户设置不同的样式:
定义一个方法:GetShoppingCartID(),在其中写入:
/****************如果用户登录了,那么他的购物车编号就是他的会员编号***********************/
//如果用户登录了,我们在登录的时候,将用户的编号查出来,然后将它写入Forms验证的Cookies中。
System.Web.HttpContext context = System.Web.HttpContext.Current;
if (context.User.Identity.Name != "")
{//当前上下文的标示不为空,说明用户已经登录
return context.User.Identity.Name;//实际上name的值就是用户登录时写入cookies的值
}
//----------------如果用户没有登录,就会产生一个随机的购物车编号--------------------------
if (context.Request.Cookies["cartID"] != null)//这个判断是在用户没有登录时,首先它没有购物车编号,那么回随机给他生成一个,但是,如果他点击再次购买类似的时,那么为了保持购物车编号的唯一
//(这个在没登录的用户第一次的时候肯定不成立)
{
return context.Request.Cookies["cartID"].ToString();
}
else
{
Guid g = Guid.NewGuid();
context.Response.Cookies["cartID"].Value = g.ToString();
return g.ToString();//返回临时购物车编号
}
这样,就可以非常简单的判断用户了。
Httpcontext的来历:
Web应用程序加载(web.config文件相关设置------profieBase类) 动态生成 profileCommon类 由这个封装为 httpcontext的profile属性 进一步封装为page类的Context属性。