using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Data.SqlClient;
using System.Web.Caching;
public partial class SSOLogin : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        

    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        TextBox1.Text = "";
        TextBox2.Text = "";
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string ConStr = "server=(local);user id=myzf;pwd=123456;database=SQL_Data";
        SqlConnection con = new SqlConnection(ConStr);
        string SqlStr = "select  * from myuser where  sname = '" + TextBox1.Text + "' and spwd = '" + TextBox2.Text + "'";
        SqlDataAdapter ada = new SqlDataAdapter(SqlStr, con);
        con.Open();
        DataSet ds = new DataSet();
        ada.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            // 作为唯一标识的str_Key，应该是唯一的，这可根据需要自己设定规则。
            // 做为测试，这里用用户名和密码的组合来做标识；也不进行其它的错误检查。 
            // 生成str_Key
            string str_Key = TextBox1.Text + "_" + TextBox2.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;
                // 首次登录成功
                Session["username"] = "欢迎  " + TextBox1.Text + "  光临本网站！";
            }
            else
            {
                // 在 Cache 中存在该用户的记录，表名已经登录过，禁止再次登录
                Session["username"] = "抱歉，" + TextBox1.Text + " 您已登录后，不必再登录了！";
            }
            Response.Redirect("Default.aspx");
        }
        else
        {
            Response.Write("<script>alert('用户名或密码错误，请重新登录！')</script>");
        }
    }
}
