ASP.NET网络上实现单点登录

 单点登录(Single Sign On)简称SSO,是目前比较流行的企业业务整合的解决方案之一。在开发企业门户网站或电子商务系统时,设计一个用户只能在同一网站进行惟一登录的功能。

Cache对象主要用于Web应用程序的缓存。对于每个应用程序都需要创建Cache对象的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效,有关Cache对象实例的所有信息都须通过HttpContext对象的Cache属性或Page对象的Cache属性来提供。

本实例中,把用户的登录信息保存在Cache对象中,并设置过期时间为Session变量失效的时间,因此,一旦Session变量失效,Cache对象也就过期了;但Cache对象对所有的用户还可以访问,因此,用它保存用户信息比数据库来得方便。

protected void btnLogin_Click(object sender, EventArgs e)
   {
        int i = this.checkLogin(txtName.Text,txtPwd.Text);
        if (i> 0)
        {
            string str_Key = txtName.Text + "_" + txtPwd.Text;
            // 得到Cache中的给定str_Key的值
            string str_User = Convert.ToString(Cache[str_Key]);
            // Cache中如果没有str_Key的项目,那么用户没有登录
            if (str_User == String.Empty)
            {
                // TimeSpan构造函数,用来判断是否登录。
                TimeSpan SessTimeOut = new TimeSpan(0,0,HttpContext.Current.Session.Timeout,0,0);                

HttpContext.Current.Cache.Insert(str_Key,str_Key,null,DateTime.MaxValue,SessTimeOut, CacheItemPriority.NotRemovable,null);
                Session["User"] = str_Key;
                // 首次登录成功
                Response.Write("<h2 style='color:red'>你好,登录成功!");
            }
            else
            {
                // 在 Cache 中存在该用户的记录,表名已经登录过,禁止再次登录
                Response.Write("<h2 style='color:red'>抱歉,您好像已经登录了!");
                return;
            }
        }
        else
        {
            Response.Write("用户名称或密码错误!!!");
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值