专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » 单点登录:小技巧:在ASP.NET 中实现单点登录 »正文

单点登录:小技巧:在ASP.NET 中实现单点登录

来源: 发布时间:星期四, 2009年2月12日 浏览:148次 评论:0



  由于某些原因在我们应用中会遇到个用户只能在个地方登录情况也就是我们通常所说单点登录在ASP.NET中实现单点登录其实很简单下面就把主要思路方法和全部代码进行分析
  
  实现思路
  
  利用Cache功能我们把用户登录信息保存在Cache中并设置过期时间为Session失效时间因此旦Session失效我们Cache也过期;而Cache对所有用户都可以访问因此用它保存用户信息比数据库来得方便
  
  SingleLogin.aspx代码
  
  <%@ Page language="c#" Codebehind="SingleLogin.aspx.cs" AutoEventWireup="false"
   Inherits="eMeng.Exam.SingleLogin" %>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  <HTML>
  <HEAD>
  <title>单点登录测试</title>
  <meta http-equiv="Content-Type" content="text/html; char=gb2312">
  <meta http-equiv="Author" content="孟子E章">
  <meta http-equiv="WebSite" content="http://dotnet.aspx.cc/">
  <style>
  H3 { FONT: 17px 宋体 }
  INPUT { FONT: 12px 宋体 }
  SPAN { FONT: 12px 宋体 }
  P { FONT: 12px 宋体 }
  H4 { FONT: 12px 宋体 }
  </style>
  </HEAD>
  <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <div align="center">
    <h3>单点登录测试</h3>
    <p>用户名称:<asp:TextBox id="UserName" runat="server"></asp:TextBox></p>
    <p>用户密码:<asp:TextBox id="PassWord" runat="server" TextMode="Password"></asp:TextBox></p>
    <p><asp:Button id="Login" runat="server" Text=" 登 录 "></asp:Button></p>
    <p><asp:Label id="Msg" runat="server"></asp:Label></p>
   </div>
  </form>
  </body>
  </HTML>
  
  SingleLogin.aspx.cs代码
  
  using ;
  using .Collections;
  using .ComponentModel;
  using .Data;
  using .Drawing;
  using .Web;
  using .Web.SessionState;
  using .Web.UI;
  using .Web.UI.WebControls;
  using .Web.UI.HtmlControls;
  
   eMeng.Exam
  {
  /// <summary>
  /// SingleLogin 摘要介绍说明
  /// 实现单点登录
  /// </summary>
  public SingleLogin : .Web.UI.Page
  {
  protected .Web.UI.WebControls.TextBox UserName;
  protected .Web.UI.WebControls.TextBox PassWord;
  protected .Web.UI.WebControls.Label Msg;
  protected .Web.UI.WebControls.Button Login;
  
  private void Page_Load(object sender, .EventArgs e)
  {
   // 实际例子可访问:
   // http://dotnet.aspx.cc/Exam/SingleLogin.aspx
  }
  
  #region Web 窗体设计器生成代码
  override protected void _disibledevent=>   this.Load .EventHandler(this.Page_Load);
  }
  #endregion
  
  private void Login_Click(object sender, .EventArgs e)
  {
   // 作为唯标识Key应该是唯这可根据需要自己设定规则
   // 做为测试这里用用户名和密码组合来做标识;也不进行其它检查
  
   // 生成Key
    sKey = UserName.Text + "_" + PassWord.Text;
   // 得到Cache中给定Key
    sUser = Convert.(Cache[sKey]);
   // 检查是否存在
    (sUser null || sUser String.Empty)
   {
    // Cache中没有该Key项目表名用户没有登录或者已经登录超时
    // 注意下面使用TimeSpan构造重载版本思路方法是进行是否登录判断关键
    TimeSpan SessTimeOut = TimeSpan(0,0,.Web.HttpContext.Current.Session.Timeout,0,0);
    HttpContext.Current.Cache.Insert(sKey,sKey,null,DateTime.MaxValue,SessTimeOut,
     .Web.Caching.CacheItemPriority.NotRemovable,null);
    Session["User"] = sKey;
    // 首次登录您可以做您想做工作了
    Msg.Text="<h4 style='color:red'>嗨!欢迎您访问<a href='http://dotnet.aspx.cc/'>【孟宪会的精彩世界】";
    Msg.Text "</a>祝您浏览愉快!:)</h4>";
   }
   
   {
    // 在 Cache 中发现该用户记录表名已经登录过禁止再次登录
    Msg.Text="<h4 style='color:red'>抱歉您好像已经登录了呀:-(</h4>";
    ;
   }
  }
  }
  }
  
  
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: