⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 default.aspx.cs

📁 跨平台跨服务器跨网站SSO(单点登录)的方案
💻 CS
字号:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using LoginInfo;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Net;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["uid"] != null)
            {
                Label1.Text = "已登陆" + Session["uid"].ToString();
            }
            else
            {
                if (Request.QueryString["key"] == null)
                {
                    HttpWebRequest request = HttpWebRequest.Create("http://pc-yzhu/login/default.aspx") as HttpWebRequest;
                    request.Credentials = CredentialCache.DefaultCredentials;
                    if (request != null)
                    {
                        request.Timeout = 5;
                        bool isOk = true;
                        try
                        {
                            request.GetResponse();
                        }
                        catch
                        {
                            isOk = false;
                        }
                        if (isOk)
                        {
                            string url = Request.Url.ToString().IndexOf("?") != -1 ? Request.Url.ToString().Substring(0, Request.Url.ToString().IndexOf("?")) : Request.Url.ToString();
                            string RedrectUrl = String.Format
                                (ConfigurationManager.AppSettings["LoginUrl"].ToString(),
                                HttpUtility.UrlEncode(url, System.Text.Encoding.UTF8) + "&",
                                HttpUtility.UrlEncode(ConfigurationManager.AppSettings["LogOutUrl"].ToString(), System.Text.Encoding.UTF8) + "&",
                                HttpUtility.UrlEncode(ConfigurationManager.AppSettings["name"].ToString(), System.Text.Encoding.UTF8));
                            Response.Redirect(RedrectUrl);
                        }
                    }
                }
                else if (Request.QueryString["key"].ToString() == "1")
                {
                }
                else
                {
                    string key = Request.QueryString["key"] as string;
                    key = Server.UrlDecode(key);
                    byte[] bytes;
                    try
                    {
                        bytes = Convert.FromBase64String(key);
                    }
                    finally
                    {
                    }
                    Info info;
                    if(bytes==null)
                        return;
                    try
                    {
                        info = this.DataDeserialize(bytes);
                    }
                    finally
                    {
                    }
                    if (info == null)
                        return;
                    bool isChecked = false;
                    using (SqlConnection con = new SqlConnection("server=srv-devdbhost;uid=sa;pwd=Abcd1234;database=test;"))
                    {
                        SqlCommand cmd = new SqlCommand("Proc_CheckNewID", con);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add("@newID", SqlDbType.VarChar);
                        cmd.Parameters["@newID"].Value = info.Key;
                        cmd.Parameters.Add("@username", SqlDbType.VarChar);
                        cmd.Parameters["@username"].Value = info.UserName;
                        cmd.Parameters.Add("@uid", SqlDbType.BigInt);
                        cmd.Parameters["@uid"].Direction = ParameterDirection.Output;
                        cmd.Parameters.Add("@Ret", SqlDbType.Int);
                        cmd.Parameters["@Ret"].Direction = ParameterDirection.Output;
                        con.Open();
                        cmd.ExecuteNonQuery();
                        int ret = Convert.ToInt32(cmd.Parameters["@Ret"].Value);
                        if (ret == 1)
                        {
                            long uid = Convert.ToInt64(cmd.Parameters["@uid"].Value);
                            isChecked = true;
                            Label1.Text = "刚验证";
                            Session.Add("uid", uid);
                        }
                    }
                }
            }
        }
    }

    private Info DataDeserialize(byte[] bytes)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        MemoryStream ms = new MemoryStream(bytes);
        Info info = formatter.Deserialize(ms) as Info;
        return info;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        using (SqlConnection con = new SqlConnection("server=srv-devdbhost;uid=sa;pwd=Abcd1234;database=test;"))
        {
            SqlCommand cmd = new SqlCommand("UserLogin", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@username", SqlDbType.VarChar);
            cmd.Parameters["@username"].Value = TextBox1.Text;
            cmd.Parameters.Add("@pwd", SqlDbType.VarChar);
            cmd.Parameters["@pwd"].Value = TextBox2.Text;
            cmd.Parameters.Add("@uid", SqlDbType.BigInt);
            cmd.Parameters["@uid"].Direction = ParameterDirection.Output;
            cmd.Parameters.Add("@newID", SqlDbType.VarChar, 50);
            cmd.Parameters["@newID"].Direction = ParameterDirection.Output;
            con.Open();
            cmd.ExecuteNonQuery();
            long uid = Convert.ToInt64(cmd.Parameters["@uid"].Value);
            string newID = Server.UrlEncode(cmd.Parameters["@newID"].Value as string);
            if (uid == null)
                Response.Write("<script language=javascript>alert('用户名或者密码错误')</script>");
            else
            {
                Session.Add("uid", uid);
                FetchKey key = new FetchKey();
                string strKey = key.Fetch(uid);
                string src = String.Format(ConfigurationManager.AppSettings["RegLogin"].ToString(), Server.UrlEncode(strKey) + "&", HttpUtility.UrlEncode(ConfigurationManager.AppSettings["LogOutUrl"].ToString(), System.Text.Encoding.UTF8) + "&", HttpUtility.UrlEncode(ConfigurationManager.AppSettings["name"].ToString(), System.Text.Encoding.UTF8));
                Label1.Text = "已登陆" + Session["uid"].ToString();
                Response.Write("<script language=javascript type='text/javascript' src ='" + src + "'></script>");
            }
        }
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        Session.Abandon();
        HttpWebRequest request = HttpWebRequest.Create("http://pc-yzhu/login/logout.aspx") as HttpWebRequest;
        request.Credentials = CredentialCache.DefaultCredentials;
        if (request != null)
        {
            request.Timeout = 5;
            bool isOk = true;
            try
            {
                request.GetResponse();
            }
            catch
            {
                isOk = false;
            }
            if (isOk)
            {
                Response.Redirect("http://pc-yzhu/login/logout.aspx");
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -