单点登录


<%@ WebHandler Language="C#" Class="kjzj" %>

using System;
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;

public class kjzj : IHttpHandler {

    private HttpRequest Request { get; set; }
    private HttpResponse Response { get; set; }
     
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        this.Request = context.Request;
        this.Response = context.Response;

        Execu_Method(); //与电教馆的平台实现互通 
       
    } 
 
    public bool IsReusable {
        get {
            return false;
        } 
    } 

    public void Execu_Method()
    {
        string ticket = Request["ticket"];
        string op = Request["op"];
        Response.Redirect("/api/sign.aspx?ticket=" + ticket+"&op="+op);
    }
   

}

------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web.Script.Serialization;
using Newtonsoft.Json;

/// <summary>
/// 可以获得时间戳的静态类
/// </summary>
public static class DateTimeExtensions
{
    private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    public static long currentTimeMillis(this DateTime d)
    {
        return (long)((DateTime.UtcNow - Jan1st1970).TotalMilliseconds);
    }
}
/// <summary>
/// 为获得Token传递json参数准备的参数类
/// </summary>
public class TokenParams
{
    public string appid { get; set; }
    public string timestamp { get; set; }
    public string keyinfo { get; set; }
}

public class LoginUserInfo
{
 	public string personid{get;set;}
	public string token{get;set;}
	public string mobnum{get;set;}
	public string email{get;set;}
	public string name{get;set;}
	public string areacode{get;set;}
	public string areaname{get;set;}
	public string gender{get;set;}
	public string usertype{get;set;}
	public string address{get;set;}
	public string postcode{get;set;}
	public string logourl1{get;set;}
	public string logourl2{get;set;}
	public string logourl3{get;set;}
	public string profession{get;set;}
	public string credtype{get;set;}
    public string idcardno{get;set;}
 	public string orgaid{get;set;}
	public string organame{get;set;}
	public string account{get;set;}
}

public partial class api_sign : System.Web.UI.Page
{
    public string usessionid = "";
    public string appid = "AP2445063012024";
    public string appkey = "e5daa12dea44498681bdd7b537e958d8";
    public string timestamp = ""; //时间戳 
    public string keyinfo = ""; //需要加密 
    public string token = "";
	//----------下面的变量是用来在一生一空间大奖赛首页显示用户头像,信息的---------------
    public string name = ""; //登录者的名字
    public string logourl = "http://n.eduyun.cn"; //登录者的头像地址
    public string organame = "";//用户所在机构\学校的名称
    public string email = "";//用户邮箱
    public string usertype = "";//用户类型 0学生 1老师 2家长 3机构 4学校 5学校工作人员 6机构工作人员
    public string personid = "";//personid
	public string areaname = "";//用户归属地区域名称 
	//----------下面的变量是用来存在数据库中保存登录用户详细信息的---------------
	public string mobnum = "";//手机号码
	public string areacode = "";//用户归属地区域
	public string gender = "";//性别0女1男
	public string address = "";//用户通讯地址 
	public string postcode = "";//邮编
	public string logourl1 = "http://n.eduyun.cn"; //头像地址小
	public string logourl2 = "http://n.eduyun.cn"; //头像地址中
	public string logourl3 = "http://n.eduyun.cn"; //头像地址大
	public string profession = "";//职业
	public string credtype = "";//0身份证1护照2军人证3其他
	public string idcardno = "";//证件号码
	public string orgaid = "";//用户所在机构或学校id
	public string account = "";//账号

	signLogin.ysykj.Bll bll = new signLogin.ysykj.Bll();  //引用底层代码 暂时建的Bll文件

    protected void Page_Load(object sender, EventArgs e)
	{
		#region  session方法 不用了
		//用户进行投票时传递的session参数验证是否本人在进行投票
		//if (Session["usessionid"] != null && Session["token"] != null)
		//{

		//    string usessionid = Session["usessionid"].ToString();
		//    string token = Session["token"].ToString();
		//    string strInfo = GetUserInfo(usessionid, token);
		//    Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strInfo);
		//    if (infoList["result"] != null)
		//    {
		//        string result = infoList["result"].ToString();
		//        //Response.Write(result); 
		//        Session["result"] = result;
		//        //Server.Transfer("/djs_ysykj/vote.aspx");
		//        Response.Redirect("/djs_ysykj/vote.aspx");
		//    }
		//    //Session.RemoveAll();
		//}
		#endregion

		string method = Request["op"];
		switch (method)
		{
			case "login":  //用户登录获取用户信息显示在大奖赛首页
				Login();
				break;
			case "vote_getUserInfo": //用户投票时对用户的token进行验证 看是否本人来投票了
				Vote_GetUserInfo();
				break;  
		}
		Response.Write("我用来做测试");
    }
	/// <summary>
	/// 用户登录获取用户信息显示在大奖赛首页
	/// </summary>
	public void Login()
	{
		//用户从第三方入口登录成功后会传递的参数ticket
		if (!string.IsNullOrEmpty(Request["ticket"]))
		{
			//验证ticket的有效性------>获取usessionid  
			string ticket = Request["ticket"].ToString();
			string strUrl = "http://ticket.eduyun.cn:10000/aamif/ticketValidate?ticket=" + ticket;
			string urlCon = GetUsessionid(strUrl);//取报文得到usessionid
			if (urlCon.Contains("Ticket") && urlCon.Contains("not recognized"))
			{
				//Response.Write("No_usessionid=" + urlCon);
			}
			else
			{
				usessionid = urlCon;
			}
			//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			//准备appid,时间戳和keyinfo----->获取Token
			timestamp = Convert.ToString(DateTimeExtensions.currentTimeMillis(DateTime.Now));//获取时间戳
			string text = appid + appkey + timestamp;
			keyinfo = hmacSha1(text, appkey); //加密获得keyinfo
			string strToken = GetTokenByJson(appid, timestamp, keyinfo);    //通过传递json参数--->获取Token
			//GetTokenWebClient(); //另外一种方式获取Token-------可实现
			Newtonsoft.Json.Linq.JObject tokenList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strToken);  //对strToken(JSON数据)反序列化解析json数据
			token = tokenList["tokenInfo"]["token"].ToString();
			//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			//通过usessionid和token得到用户的信息
			string strInfo = GetUserInfo(usessionid, token);
			ReadUserInfo(strInfo); 	//处理得到 用户的信息 进行JSON反序列化 读取有用的信息
			//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			if (usertype == "0" || usertype == "1")  //只有老师和学生才会下发Cookie
			{
				//string userCookie = SetCookie();
				//string pid = IsExistPersonid(personid); 
				//首先判断用户是否已经入过一次库了,是否已经存在  
				string personidJson = "{\"personid\":\""+personid+"\"}";
				string urlPersonidJson = "http://a.worlduc.com/djs_ysykj/analyzeJson.aspx?isexist=1";
				//string urlPersonidJson = "http://t.worlduc.com/tools/djs_ysykj/analyzeJson.aspx?isexist=1";
				string pid = GetCallBackInfo(urlPersonidJson,personidJson);
				if (pid != "") //表中已经存在 需要更新visitnum+1 和更新token token每次不一样 更新是为了投票做验证用的
				{
					//UpdateVisitnum(personid);
					string personidAndTokenJson = "{\"personid\":\""+personid+"\",\"token\":\""+token+"\"}";
					string urlPersonidAndTokenJson = "http://a.worlduc.com/djs_ysykj/analyzeJson.aspx?update=1";
					//string urlPersonidAndTokenJson = "http://t.worlduc.com/tools/djs_ysykj/analyzeJson.aspx?update=1";
					GetCallBackInfo(urlPersonidAndTokenJson,personidAndTokenJson);
				}
				else //不存在则插入数据
				{
					//将登录者的信息存到表中,得到PID为了投票时投票人的ID是int型的,以及可以知道投票人的详细信息。
					//pid = SetPidByPersonid(personid, mobnum, email, name, areacode, areaname, gender, usertype, address, postcode, logourl1, logourl2, logourl3, profession, credtype, idcardno, orgaid, organame, account);
					LoginUserInfo userInfo = JsonPackage();
					string userInfoJson=new JavaScriptSerializer().Serialize(userInfo);
					string urlInsert = "http://a.worlduc.com/djs_ysykj/analyzeJson.aspx?insert=1";
					//string urlInsert = "http://t.worlduc.com/tools/djs_ysykj/analyzeJson.aspx?insert=1";
					pid=GetCallBackInfo(urlInsert,userInfoJson);   

				}
				//给用户下发Cookie(KjzjToken)
				SetYsykjCookie(usessionid, personid, pid, token, logourl, name, usertype, organame, areaname, email);  
				Response.Redirect("http://ysykj.worlduc.com/kjzj/"); //页面跳转
			}
			else //其他身份的用户跳转
			{
				Response.Redirect("/api/identity.aspx");
			}
			#region
			//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			//if (usertype == "0" || usertype == "1") //只给 老师和学生 下发Cookie  用的是get(明文)方式给用户下发Cookie  这里不采用明文给用户下发Cookie
			//{
			//    if (infoList["userinfo"]["personid"] != null)  //用来传给大奖赛首页做Cookie的  
			//        personid = infoList["userinfo"]["personid"].ToString();
			//    Response.Redirect("http://www.worlduc.com/e/default.aspx?eid=2850504&l=" + logourl + "&n=" + name + "&s=" + organame + "&e=" + email + "&uid=" + personid);
			//}
			//else
			//{
			//    Response.Redirect("http://www.worlduc.com/e/default.aspx?eid=2850504&l=" + logourl + "&n=" + name + "&s=" + organame + "&e=" + email);
			//}
			//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
			#endregion
		}
		else
		{
			Response.Write("ticket=No");
		}
 
	}
    /// <summary>
    /// 为跨域post请求发送数据,提前准备的数据 
    /// </summary>
    /// <returns></returns>
	public LoginUserInfo  JsonPackage()
	{
		LoginUserInfo userInfo = new LoginUserInfo();
		userInfo.personid = personid;
		userInfo.token = token;
		userInfo.mobnum = mobnum;
		userInfo.email = email;
		userInfo.name = name;
		userInfo.areacode = areacode;
		userInfo.areaname = areaname;
		userInfo.gender = gender;
		userInfo.usertype = usertype;
		userInfo.address = address;
		userInfo.postcode = postcode;
		userInfo.logourl1 = logourl1;
		userInfo.logourl2 = logourl2;
		userInfo.logourl3 = logourl3;
		userInfo.profession = profession;
		userInfo.credtype = credtype;
		userInfo.idcardno = idcardno;
		userInfo.orgaid = orgaid;
		userInfo.organame = organame;
		userInfo.account = account;
		return userInfo;
	}
	/// <summary>
	/// post请求发送json包数据跨域访问用来获取Pid
	/// </summary>
	/// <param name="url"></param>
	/// <param name="param"></param>
	/// <returns></returns>
	public static string GetCallBackInfo(string url, string param)
	{
		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
		request.Method = "POST";
		request.ContentType = "application/json;charset=UTF-8";
		//request.ContentType = "application/json;charset=gb2312"; 
		byte[] payload = System.Text.Encoding.UTF8.GetBytes(param);
		request.ContentLength = payload.Length;
		Stream writer = request.GetRequestStream();
		writer.Write(payload, 0, payload.Length);
		writer.Close();
		HttpWebResponse response = (HttpWebResponse)request.GetResponse();
		Stream s = response.GetResponseStream();
		StreamReader Reader = new StreamReader(s, Encoding.UTF8);
		string StrDate = "";
		string strValue = "";
		while ((StrDate = Reader.ReadLine()) != null)
		{
			strValue += StrDate + "\r\n";
		}
		//return strValue;
		return System.Text.RegularExpressions.Regex.Replace(strValue, "<[^>]+>", "").Trim();//可以过滤掉Html标签
	}
	/// <summary>
	/// 用户投票时对用户的token进行验证 看是否本人来投票了
	/// </summary>
	public void Vote_GetUserInfo()   
	{
		//为了实现跨域访问,允许其他域名访问,是html5新增的一项标准功能,因此 IE10以下版本的浏览器是不支持 的
	    //Response.AppendHeader("Access-Control-Allow-Origin", "*"); 
		string usessionid = Request["usessionid"];
		string token = Request["token"];
		string callback = Request["callback"];
		string strInfo = GetUserInfo(usessionid, token);
		Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strInfo);
		if (infoList["result"] != null)
		{
			string result = infoList["result"].ToString();
			if (result == "000000") //验证用户成功,是本人
			{
				//这里返回json 加上callback就成了jsonp为了实现跨域访问
				string tempOk = "{\"flag\":\"ok\"}";   
				Response.Write(string.Format("{0}({1})",callback,tempOk));
				//Response.Write("ok");
				Response.End();
			}
			else
			{
				string tempNo = "{\"flag\":\"no\"}";
				Response.Write(string.Format("{0}({1})",callback,tempNo));
				//Response.Write("no");
				Response.End(); 
			}

		}

	}
	/// <summary>
	/// 判断登录用户是否已经存在,存在返回pid不存在返回""
	/// </summary>
	/// <param name="personid">用户的唯一标识personid(string型)</param>
	/// <returns></returns>
	public string IsExistPersonid(string personid)
	{
		#region
		//string strCon = "server= 127.0.0.1;database=worlduc;uid=sa;pwd=123456";
		//System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon);
		//conn.Open();
		查询是否有对应的pid没有就返回""
		//string strIsExist = "select pid from DJS_YSYKJ_EDUUserInfo where personid= \'" + personid + "\'";
		//System.Data.SqlClient.SqlCommand cmdIsExist = new System.Data.SqlClient.SqlCommand(strIsExist, conn);
		//string result=Convert.ToString(cmdIsExist.ExecuteScalar());
		//conn.Close();
		//conn.Dispose();
		//return result;
		#endregion

		return bll.IsExistPersonid(personid);

	}
	/// <summary>
	/// 更新表格(DJS_YSYKJ_EDUUserInfo)的visitnum字段访问次数+1
	/// </summary>
	/// <param name="personid">用户的唯一标识personid(string型)</param>
	public void UpdateVisitnum(string personid)
	{
		#region
		//string strCon = "server= 127.0.0.1;database=worlduc;uid=sa;pwd=123456";
		//System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon);
		//conn.Open();
		查询出访问次数(visitnum)
		//string strSelect = "select visitnum from DJS_YSYKJ_EDUUserInfo where personid= \'" + personid + "\'";
		//System.Data.SqlClient.SqlCommand cmdSelect = new System.Data.SqlClient.SqlCommand(strSelect,conn);
		//string temp=Convert.ToString(cmdSelect.ExecuteScalar());
		//string visitnum =Convert.ToString(int.Parse(temp) + 1);
		更新库里的访问次数加+1 
		//string strUpdate = "update DJS_YSYKJ_EDUUserInfo set visitnum=\'" + visitnum + "\' where personid= \'" + personid + "\'";
		//System.Data.SqlClient.SqlCommand cmdUpdate = new System.Data.SqlClient.SqlCommand(strUpdate,conn);
		//cmdUpdate.ExecuteNonQuery();
		//conn.Close(); 
		//conn.Dispose();
		#endregion

		bll.UpdateVisitnum(personid);

	}
	/// <summary>
	/// 将用户的详细信息存到表中,得到PID
	/// </summary>
	public string SetPidByPersonid(string personid,string mobnum,string email,string name,string areacode,string areaname,string gender,string usertype,string address,string postcode,string logourl1,string logourl2,string logourl3,string profession,string credtype,string idcardno,string orgaid,string organame,string account)
	{
		#region
		数据入库(本地)---->DJS_YSYKJ_EDUUserInfo  
		//string strCon = "server= 127.0.0.1;database=worlduc;uid=sa;pwd=123456";
		//System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon);  
		//conn.Open();
		增加一条数据
		//string strInsert="insert into DJS_YSYKJ_EDUUserInfo (personid,mobnum,email,name,areacode,areaname,gender,usertype,address,postcode,logourl1,logourl2,logourl3,profession,credtype,idcardno,orgaid,organame,account,visitnum) values(\'"+personid+"\',\'"+mobnum+"\',\'"+email+"\',\'"+name+"\',\'"+areacode+"\',\'"+areaname+"\',\'"+gender+"\',\'"+usertype+"\',\'"+address+"\',\'"+postcode+"\',\'"+logourl1+"\',\'"+logourl2+"\',\'"+logourl3+"\',\'"+profession+"\',\'"+credtype+"\',\'"+idcardno+"\',\'"+orgaid+"\',\'"+organame+"\',\'"+account+"\',\'0\')";
		//System.Data.SqlClient.SqlCommand cmdInsert = new System.Data.SqlClient.SqlCommand(strInsert,conn);
		//cmdInsert.ExecuteNonQuery(); 
		根据personid查询出对应的pid
		//string strPid = "select pid from DJS_YSYKJ_EDUUserInfo where personid= \'"+personid+"\'";
		//System.Data.SqlClient.SqlCommand cmdPid = new System.Data.SqlClient.SqlCommand(strPid, conn);
		//string pid=Convert.ToString(cmdPid.ExecuteScalar());
		关闭数据库的连接
		//conn.Close();
		//conn.Dispose();
		返回pid
		//return pid;
		#endregion

		return bll.SetPidByPersonid(personid, mobnum, email, name, areacode, areaname, gender, usertype, address, postcode, logourl1, logourl2, logourl3, profession, credtype, idcardno, orgaid, organame, account);

	}  
	/// <summary>
	/// 给一生一空间大奖赛首页下发用户的Cookie数据,下发时要加上personid对应的int的pid
	/// </summary>
	/// <param name="logourl"></param>
	/// <param name="name"></param>
	/// <param name="usertype"></param>
	/// <param name="organame"></param>
	/// <param name="areaname"></param>
	/// <param name="email"></param>
	/// <param name="usessionid"></param>
	/// <param name="token"></param>
	/// <param name="personid"></param>
	public void SetYsykjCookie(string usessionid, string personid, string  pid, string token, string logourl, string name, string usertype, string organame, string areaname, string email )
	{
		HttpCookie tokenCookie = new HttpCookie("KjzjToken");  //多个参数的Cookie
		tokenCookie["usessionid"] = System.Text.RegularExpressions.Regex.Replace(usessionid, "<[^>]+>", "").Trim();//可以过滤掉Html标签(报文)
		tokenCookie["personid"] = personid;
		tokenCookie["pid"] = pid;
		tokenCookie["token"] = token; 
		tokenCookie["logourl"] = logourl;
		//tokenCookie["name"] = name;
		tokenCookie["name"] = HttpUtility.UrlEncode(name); // .UrlEncode目的是ie内核中文不乱码
		tokenCookie["usertype"] = usertype;
		tokenCookie["organame"] = HttpUtility.UrlEncode(organame);
		tokenCookie["areaname"] = HttpUtility.UrlEncode(areaname);
		tokenCookie["email"] = email;
		tokenCookie.Domain = ".worlduc.com";
		Response.SetCookie(tokenCookie);
		//Response.Cookies.Add(tokenCookie);
		
	}
    /// <summary>
    /// 给登录者 下发Cookie  
    /// </summary>
    /// <returns></returns>
    public string SetCookie() //下发的Cookie只有两个参数
    {
        HttpCookie mycookie = new HttpCookie("userinfo");  //多个参数的Cookie
        mycookie["id"] = personid;
        mycookie["name"] = name;
        mycookie.Domain=".worlduc.com";
        //mycookie.Expires = DateTime.Now.AddHours(1); 
        Response.Cookies.Add(mycookie);
        return Request.Cookies["userinfo"].Value;
        //Response.Write(Request.Cookies["userinfo"].Value);
        //mycookie.Expires=DateTime.Now.AddMonths(-2); //清除Cookie  

        //HttpCookie cookie = new HttpCookie("id", "234"); //创建cookie的实例。 //一个参数的Cookie
        //Response.Cookies.Add(cookie);//将创建的cookie文件输入到浏览器端
        //Response.Write(Request.Cookies["id"].Value); //读取cookie文件中存储的值
        //cookie.Expires=DateTime.Now.AddDays(-2);  
    }
	/// <summary>
	/// 用户的信息 进行JSON反序列化 读取有用的信息 赋值
	/// </summary>
	/// <param name="strInfo"></param>
	public void ReadUserInfo(string strInfo)
	{
		Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strInfo);
		try
		{ logourl += infoList["userinfo"]["userlogolist"][1]["logourl"].ToString(); }   //logourl
		catch (Exception ex)
		{
			logourl += "";
			//logourl += infoList["userinfo"]["userlogolist"];
		}
		if (infoList["userinfo"]["name"] != null)    //name
		{ name = infoList["userinfo"]["name"].ToString(); }
		else
		{ name = "----"; }
		if (infoList["userinfo"]["usertype"] != null)   //usertype
		{ usertype = infoList["userinfo"]["usertype"].ToString(); }
		else
		{ usertype = "----"; }   //用户类型 0学生 1老师 2家长 3机构 4学校 5学校工作人员 6机构工作人员
		if (usertype == "0")
		{ name = name + "(学生)"; }
		else if (usertype == "1")
		{ name = name + "(老师)"; }
		if (infoList["userinfo"]["organame"] != null)   //organame
		{ organame = infoList["userinfo"]["organame"].ToString(); }
		else
		{ organame = "----"; }
		if (infoList["userinfo"]["areaname"] != null)     //areaname
		{ areaname = infoList["userinfo"]["areaname"].ToString(); }
		else
		{ areaname = "----"; }           
		if (infoList["userinfo"]["email"] != null)   //email
		{ email = infoList["userinfo"]["email"].ToString(); }
		else
		{ email = "----"; }
		if (infoList["userinfo"]["personid"] != null)    //personid
		{ personid = infoList["userinfo"]["personid"].ToString(); }
		else
		{ personid = "----"; }
		//------------------上面读到的数据--->下发YsykjCookie的数据够了---------------------
		//------------------下面读到的数据---->为了用户的信息存到数据库中----------------
		if(infoList["userinfo"]["mobnum"]!=null)   //mobnum
		{ mobnum = infoList["userinfo"]["mobnum"].ToString(); }
		else
		{mobnum="----";}
		if(infoList["userinfo"]["areacode"]!=null)  //areacode
		{areacode=infoList["userinfo"]["areacode"].ToString();}
		else
		{areacode="----";} 
		if(infoList["userinfo"]["gender"]!=null)   //gender
		{gender=infoList["userinfo"]["gender"].ToString();}
		else
		{gender="----";}
		if(infoList["userinfo"]["address"]!=null)  //address
		{address=infoList["userinfo"]["address"].ToString();}
		else
		{address="----";}
		if(infoList["userinfo"]["postcode"]!=null)  //postcode
		{postcode=infoList["userinfo"]["postcode"].ToString();}
		else
		{postcode="----";}
    	try
		{ logourl1 += infoList["userinfo"]["userlogolist"][0]["logourl"].ToString(); }   //logourl1
		catch (Exception ex)
		{logourl1 += "";}
		try
		{ logourl2 += infoList["userinfo"]["userlogolist"][1]["logourl"].ToString(); }   //logourl2
		catch (Exception ex)
		{logourl2 += "";}
		 try
		{ logourl3 += infoList["userinfo"]["userlogolist"][2]["logourl"].ToString(); }   //logourl3
		catch (Exception ex)
		{logourl3 += "";}
		if(infoList["userinfo"]["profession"]!=null)  //profession
		{profession=infoList["userinfo"]["profession"].ToString();}
		else
		{profession="----";}
		if(infoList["userinfo"]["credtype"]!=null)  //credtype
		{credtype=infoList["userinfo"]["credtype"].ToString();}
		else
		{credtype="----";}
		if(infoList["userinfo"]["idcardno"]!=null) //idcardno
		{idcardno=infoList["userinfo"]["idcardno"].ToString();}
		else
		{idcardno="----";}
		if(infoList["userinfo"]["orgaid"]!=null)  //orgaid
		{orgaid=infoList["userinfo"]["orgaid"].ToString();}
		else
		{orgaid="----";}
		if(infoList["userinfo"]["account"]!=null)  //account
		{account=infoList["userinfo"]["account"].ToString();}
		else
		{account="----";}

	}
    /// <summary>
    /// 通过Get方式传递usessionid和token获取用户的信息  
    /// </summary>
    /// <returns></returns>
    public string GetUserInfo(string usessionid,string token) //通过get方式得到用户的信息
    {
        //string strUrl = " http://api.eduyun.cn/aam/rest/user/getuserinfo/04d7bfc5-b88d-493e-851f-036d6046de01?token=52e8903a4ff54112a34c51540b2c0f85";
        string temp = "http://api.eduyun.cn/aam/rest/user/getuserinfo/" + usessionid + "?token=" + token; //usessionid是带有报文(标签)的字符串
        string strUrl = System.Text.RegularExpressions.Regex.Replace(temp, "<[^>]+>", "").Trim();//可以过滤掉Html标签
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream s = response.GetResponseStream();
        StreamReader Reader = new StreamReader(s, Encoding.UTF8);
        string StrDate = "";
        string strValue = "";
        while ((StrDate = Reader.ReadLine()) != null)
        {
            strValue += StrDate + "\r\n";
        }
        return strValue;
    }
    /// <summary>
    /// 验证Ticket获取usessionid
    /// </summary>
    /// <returns></returns>
    protected string GetUsessionid(string strUrl) //GET方式得到网页内容---两种方法--都可实现
    {
        HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(strUrl);
        HttpWebResponse webreponse = (HttpWebResponse)webrequest.GetResponse();
        Stream s = webreponse.GetResponseStream();
        StreamReader Reader = new StreamReader(s, Encoding.UTF8);
        string StrDate = "";
        string strValue = "";
        while ((StrDate = Reader.ReadLine()) != null)
        {
            //strValue += StrDate + "\r\n";
            strValue += StrDate;
        }
        return strValue;

        //Stream stream = webreponse.GetResponseStream();
        //byte[] rsByte = new Byte[1024];
        //try
        //{
        //    stream.Read(rsByte, 0, 1024);
        //    return System.Text.Encoding.UTF8.GetString(rsByte, 0, rsByte.Length).ToString();
        //}
        //catch (Exception exp)
        //{
        //    return exp.ToString();
        //}

    }
    /// hmacSha1算法加密(生成长度40),转成大写
    /// </summary>
    /// <param name="encryptText">加密明文</param>
    /// <param name="encryptKey">加密密钥</param>
    /// <returns></returns>
    public static string hmacSha1(string encryptText, string encryptKey)
    {
        HMACSHA1 myHMACSHA1 = new HMACSHA1(Encoding.Default.GetBytes(encryptKey));
        byte[] RstRes = myHMACSHA1.ComputeHash(Encoding.Default.GetBytes(encryptText));

        StringBuilder EnText = new StringBuilder();
        foreach (byte Byte in RstRes)
        {
            EnText.AppendFormat("{0:x2}", Byte);
        }
        return EnText.ToString();
    }
    /// <summary>
    /// 组建Json数据准备获取Token
    /// </summary>
    public string GetTokenByJson(string appid,string timestamp,string keyinfo)
    {
        //string param = "{\"appid\":\"" + appid + "\",\"timestamp\":\"" + timestamp + "\",\"keyinfo\":\"" + keyinfo + "\"}";
        string url = "http://api.eduyun.cn/apigateway/getaccesstoken";
        TokenParams tp = new TokenParams();
        tp.appid = appid;
        tp.timestamp = timestamp;
        tp.keyinfo = keyinfo;
        JavaScriptSerializer js = new JavaScriptSerializer();
        string json = js.Serialize(tp);
        string callback = GetToken(url, json);
        //Response.Write(callback);
        return callback;
    }
    /// <summary>
    /// 获取Token通过传递url和json数据
    /// </summary>
    /// <param name="url"></param>
    /// <param name="param"></param>
    /// <returns></returns>
    public static string GetToken(string url, string param)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";
        request.ContentType = "application/json;charset=UTF-8";
        byte[] payload = System.Text.Encoding.UTF8.GetBytes(param);
        request.ContentLength = payload.Length;
        Stream writer = request.GetRequestStream();
        writer.Write(payload, 0, payload.Length);
        writer.Close();
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream s = response.GetResponseStream();
        StreamReader Reader = new StreamReader(s, Encoding.UTF8);
        string StrDate = "";
        string strValue = "";
        while ((StrDate = Reader.ReadLine()) != null)
        {
            strValue += StrDate + "\r\n";
        }
        return strValue;
    }
    /// <summary>
    /// 获取Token通WebClient
    /// </summary>
    /// <returns></returns>
    public void GetTokenWebClient()
    {
        WebClient wc = new WebClient();
        //StringBuilder postData = new StringBuilder(); //另外一种传递参数的方式
        //postData.Append("appid=" + appid);
        //postData.Append("×tamp=" + timestamp);
        //postData.Append("&keyinfo=" + keyinfo);
        TokenParams tp = new TokenParams();
        tp.appid = appid;
        tp.timestamp = timestamp;
        tp.keyinfo = keyinfo;
        JavaScriptSerializer js = new JavaScriptSerializer();
        string json = js.Serialize(tp);
        //下面是GB2312编码
        //byte[] sendData = Encoding.GetEncoding("GB2312").GetBytes(postData.ToString());
        byte[] sendData = Encoding.GetEncoding("GB2312").GetBytes(json);
        wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        wc.Headers.Add("ContentLength", sendData.Length.ToString());
        byte[] recData = wc.UploadData("http://api.eduyun.cn/apigateway/getaccesstoken", "POST", sendData);
        //显示返回值注意编码 
        //return Encoding.GetEncoding("GB2312").GetString(recData); //GB2312和GBK中英文均使用双字节表示(GBK是一个改进版)
        string str = Encoding.GetEncoding("UTF-8").GetString(recData); //UTF-8英文占8位1个字节,中文24位3个字节
        Response.Write(str);
    }


}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Web.Script.Serialization;
using Newtonsoft.Json; 


public partial class api_quit_kjzj : System.Web.UI.Page
{

	protected void Page_Load(object sender, EventArgs e)
	{
		if (!string.IsNullOrEmpty(Request["uid"]) && !string.IsNullOrEmpty(Request["t"]))
		{
			DeleteCookie(); //删除下发到.worlduc.com下的Cookie(KjzjToken) 

			string usessionid = Request["uid"].ToString();
			string token = Request["t"].ToString();
			string quitInfo = QuitYsykj(usessionid, token);
			Newtonsoft.Json.Linq.JObject quitList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(quitInfo);
			if (quitList["result"].ToString() == "000000")
			{
				//Response.Write("退出成功!");
				//Response.Redirect("http://ysykj.worlduc.com/kjzj/");
			}
			else
			{ 
				//Response.Write("退出失败!"); 
			}
			Response.Redirect("http://ysykj.worlduc.com/kjzj/");
		}
	 
	}


	/// <summary>
	/// 通过Get方式传递usessionid和token使用户退出登录
	/// </summary>
	/// <returns></returns>
	public string QuitYsykj(string usessionid, string token) //通过get方式得到用户的信息
	{
		//string strUrl = " http://api.eduyun.cn/aam/rest/account/logout/3d03468f-1c8e-44f3-b9f3-6bf8746fd4e5?token=fe7d707ee22e412d8c32bc8b566e7a82&personid=7f297b6f899147429c184159e7fbd3c0"; 
		string strUrl = "http://api.eduyun.cn/aam/rest/account/logout/" + usessionid + "?token=" + token;    
		//string strUrl = System.Text.RegularExpressions.Regex.Replace(temp, "<[^>]+>", "").Trim();//可以过滤掉Html标签
		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUrl);
		HttpWebResponse response = (HttpWebResponse)request.GetResponse();
		Stream s = response.GetResponseStream();
		StreamReader Reader = new StreamReader(s, Encoding.UTF8);
		string StrDate = "";
		string strValue = "";
		while ((StrDate = Reader.ReadLine()) != null)
		{
			strValue += StrDate + "\r\n";
		}
		return strValue;
	}
	/// <summary>
	/// 删除下发到.worlduc.com下的Cookie(KjzjToken)
	/// </summary>
	public void DeleteCookie()
	{
		if (Request.Cookies["KjzjToken"] != null)
		{
			//Response.Write(Request.Cookies["KjzjToken"].Value); 
			HttpCookie tokenCookie = new HttpCookie("KjzjToken");
			tokenCookie.Expires = DateTime.Now.AddDays(-2);
			tokenCookie.Value = "";
			tokenCookie.Domain = ".worlduc.com";
			Response.SetCookie(tokenCookie);
		}
	}


}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class djs_ysykj_vote : System.Web.UI.Page
{
	Bll bll = new Bll();
    protected void Page_Load(object sender, EventArgs e)
    {
		//Response.Write("ok");
		CheckKjzjToken();
    }
	public void CheckKjzjToken()
	{
		if (Request.Cookies["KjzjToken"] != null)
		{
			string personid = Request.Cookies["KjzjToken"].Values["persoinid"].ToString();
			string token = Request.Cookies["KjzjToken"].Values["token"].ToString();
			TestToken(personid,token);
		}
	}

	public void TestToken(string personid,string tokenTemp)
	{
		string tokenTruth=bll.TestToken(personid);
		if (tokenTemp == tokenTruth)
		{
 			//可以投票了验证成功!
		}
	}

}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using Newtonsoft.Json;

public partial class djs_ysykj_analyzeJson : System.Web.UI.Page
{
	Bll bll = new Bll();
    protected void Page_Load(object sender, EventArgs e)
    {
		//Response.Write("解析Json");

		if (!string.IsNullOrEmpty(Request["insert"])) 
		{
			string postContentInsert=AnalyzeJson();
			AnalyzeJsonInsert(postContentInsert);
		}
		else if (!string.IsNullOrEmpty(Request["isexist"]))
		{
			string postContentIsexist = AnalyzeJson();
			AnalyzeJsonIsexist(postContentIsexist);
		}
		else if (!string.IsNullOrEmpty(Request["update"]))
		{
			string postContentUpdate = AnalyzeJson();
			AnalyzeJsonUpdate(postContentUpdate);
		}

    }
	/// <summary>
	/// 解析json获取用户信息存到表DJS_YSYKJ_EDUUserInfo中返回pid
	/// </summary>
	public string AnalyzeJson()
	{
		Stream postData = Request.InputStream;
		StreamReader sRead = new StreamReader(postData);
		string postContent = sRead.ReadToEnd();
		sRead.Close();
		if (postContent != null || postContent != "")
		{ 
			return postContent;
		}
		else
		{ return "no"; } 
	}
	/// <summary>
	///解析json数据读取insert内容
	/// </summary>
	/// <param name="postContent"></param>
	public void AnalyzeJsonInsert(string postContent)
	{
		Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(postContent);
			string personid = infoList["personid"].ToString();
			string token = infoList["token"].ToString();
			string mobnum = infoList["mobnum"].ToString();
			string email = infoList["email"].ToString();
			string name = infoList["name"].ToString();
			string areacode = infoList["areacode"].ToString();
			string areaname = infoList["areaname"].ToString();
			string gender = infoList["gender"].ToString();
			string usertype = infoList["usertype"].ToString();
			string address = infoList["address"].ToString();
			string postcode = infoList["postcode"].ToString();
			string logourl1 = infoList["logourl1"].ToString();
			string logourl2 = infoList["logourl2"].ToString();
			string logourl3 = infoList["logourl3"].ToString();
			string profession = infoList["profession"].ToString();
			string credtype = infoList["credtype"].ToString();
			string idcardno = infoList["idcardno"].ToString();
			string orgaid=infoList["orgaid"].ToString();
			string organame=infoList["organame"].ToString();
			string account=infoList["account"].ToString();
            string pid = SetPidByPersonid(personid, token, mobnum, email, name, areacode, areaname, gender, usertype, address, postcode, logourl1, logourl2, logourl3, profession, credtype, idcardno, orgaid, organame, account);
			Response.Write(pid);
	}
	/// <summary>
	/// 将用户的详细信息存到表中,得到PID
	/// </summary>
	public string SetPidByPersonid(string personid, string token, string mobnum, string email, string name, string areacode, string areaname, string gender, string usertype, string address, string postcode, string logourl1, string logourl2, string logourl3, string profession, string credtype, string idcardno, string orgaid, string organame, string account)
	{
		#region
		数据入库(本地)---->DJS_YSYKJ_EDUUserInfo  
		//string strCon = "server= 127.0.0.1;database=worlduc;uid=sa;pwd=123456";
		//System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon);  
		//conn.Open();
		增加一条数据
		//string strInsert="insert into DJS_YSYKJ_EDUUserInfo (personid,mobnum,email,name,areacode,areaname,gender,usertype,address,postcode,logourl1,logourl2,logourl3,profession,credtype,idcardno,orgaid,organame,account,visitnum) values(\'"+personid+"\',\'"+mobnum+"\',\'"+email+"\',\'"+name+"\',\'"+areacode+"\',\'"+areaname+"\',\'"+gender+"\',\'"+usertype+"\',\'"+address+"\',\'"+postcode+"\',\'"+logourl1+"\',\'"+logourl2+"\',\'"+logourl3+"\',\'"+profession+"\',\'"+credtype+"\',\'"+idcardno+"\',\'"+orgaid+"\',\'"+organame+"\',\'"+account+"\',\'0\')";
		//System.Data.SqlClient.SqlCommand cmdInsert = new System.Data.SqlClient.SqlCommand(strInsert,conn);
		//cmdInsert.ExecuteNonQuery(); 
		根据personid查询出对应的pid
		//string strPid = "select pid from DJS_YSYKJ_EDUUserInfo where personid= \'"+personid+"\'";
		//System.Data.SqlClient.SqlCommand cmdPid = new System.Data.SqlClient.SqlCommand(strPid, conn);
		//string pid=Convert.ToString(cmdPid.ExecuteScalar());
		关闭数据库的连接
		//conn.Close();
		//conn.Dispose();
		返回pid
		//return pid;
		#endregion
		return bll.SetPidByPersonid(personid, token, mobnum, email, name, areacode, areaname, gender, usertype, address, postcode, logourl1, logourl2, logourl3, profession, credtype, idcardno, orgaid, organame, account);
	}
	/// <summary>
	/// 解析json数据读取isexist内容  
	/// </summary>
	/// <param name="postContent"></param>
	public void AnalyzeJsonIsexist(string postContent)
	{
		Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(postContent);
		string personid = infoList["personid"].ToString();
		string pid = IsExistPersonid(personid);
		Response.Write(pid);
	}
	/// <summary>
	/// 判断登录用户是否已经存在,存在返回pid不存在返回""
	/// </summary>
	/// <param name="personid">用户的唯一标识personid(string型)</param>
	/// <returns></returns>
	public string IsExistPersonid(string personid)
	{
		#region
		//string strCon = "server= 127.0.0.1;database=worlduc;uid=sa;pwd=123456";
		//System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon);
		//conn.Open();
		查询是否有对应的pid没有就返回""
		//string strIsExist = "select pid from DJS_YSYKJ_EDUUserInfo where personid= \'" + personid + "\'";
		//System.Data.SqlClient.SqlCommand cmdIsExist = new System.Data.SqlClient.SqlCommand(strIsExist, conn);
		//string result=Convert.ToString(cmdIsExist.ExecuteScalar());
		//conn.Close();
		//conn.Dispose();
		//return result;
	    #endregion
		return bll.IsExistPersonid(personid);
	}
	/// <summary>
	/// 解析json数据去读update内容
	/// </summary>
	/// <param name="postContent"></param>
	public void AnalyzeJsonUpdate(string postContent)
	{
		Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(postContent);
		string personid = infoList["personid"].ToString();
		string token = infoList["token"].ToString();
		UpdateVisitnumAndToken(personid,token);
	}
	/// <summary>
	/// 更新表格(DJS_YSYKJ_EDUUserInfo)的visitnum字段访问次数+1
	/// </summary>
	/// <param name="personid">用户的唯一标识personid(string型)</param>
	public void UpdateVisitnumAndToken(string personid,string token)
	{
		#region
		//string strCon = "server= 127.0.0.1;database=worlduc;uid=sa;pwd=123456";
		//System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon);
		//conn.Open();
		查询出访问次数(visitnum)
		//string strSelect = "select visitnum from DJS_YSYKJ_EDUUserInfo where personid= \'" + personid + "\'";
		//System.Data.SqlClient.SqlCommand cmdSelect = new System.Data.SqlClient.SqlCommand(strSelect,conn);
		//string temp=Convert.ToString(cmdSelect.ExecuteScalar());
		//string visitnum =Convert.ToString(int.Parse(temp) + 1);
		更新库里的访问次数加+1 
		//string strUpdate = "update DJS_YSYKJ_EDUUserInfo set visitnum=\'" + visitnum + "\' where personid= \'" + personid + "\'";
		//System.Data.SqlClient.SqlCommand cmdUpdate = new System.Data.SqlClient.SqlCommand(strUpdate,conn);
		//cmdUpdate.ExecuteNonQuery();
		//conn.Close(); 
		//conn.Dispose();
		#endregion
		bll.UpdateVisitnumAndToken(personid,token);
	}



}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------
{ //用户
  "usessionid": "540da5c6-2875-4fbd-9bc8-428a257a98bb",
  "platformCode": "000000",
  "result": "000000",
  "userinfo": {
    "personid": "74a2258ec28246628446bb4355dcbe49",
    "mobnum": "15710060796",
    "birthday": "",
    "name": "姓名",
    "usertype": "0",
    "fnascount": 0,
    "updateTime": "2017-05-07 16:03:18",
    "userlogolist": [],
    "account": "ysykj_Stu"
  },
  "desc": "success"
}
----------------------------------
{"desc":"获取Token成功。其中,查询应用耗时:8ms;查询平台编码耗时:5ms",
 "result":"000000",
 "tokenInfo":
  {"token":"53b45c535d10492e8b8fe9fdd37abf87",
   "validtime":"1493883455834",
    "platformCode":"000000"}}
----------------------------------
---------------------------------------
js的ajax跨域访问,传递参数,返回信息;
jQuery.ajax({
   type:"post",
   url:"http://o.worlduc.com/api/sign.aspx",
   data:"op=vote_getUserInfo&usessionid="+usessionid+"&token="+token,
   success:function(msg)
   {
      if(msg=="ok")
      {
         alert("可以投票了!");
       }
       else if(msg=="no")
       {
          alert("验证超时,请重新登录!");
        }
        
    } 

});
string method=Request["op"];
switch(method)
{
  case "vote_getUserInfo":
    Vote_GetUserInfo();
    break;
}
public void Vote_GetUserInfo()   
{
  //为了实现跨域访问,允许其他域名访问,是html5新增的一项标准功能,因此 IE10以下版本的浏览器是不支持 的
   Response.AppendHeader("Access-Control-Allow-Origin", "*"); //这是实现跨域访问的关键
   string usessionid = Request["usessionid"];
   string token = Request["token"];
   string strInfo = GetUserInfo(usessionid, token);
   Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strInfo);
   if (infoList["result"] != null)
   {
      string result = infoList["result"].ToString();
      if (result == "000000") //验证用户成功,是本人
      {
	 Response.Write("ok");
	 Response.End();
      }
      else
      {
         Response.Write("no");
         Response.End();  
       }
   }

}
---------------------
js的jsonp跨域访问,传递参数,返回json信息;
jQuery.ajax({
   type:"get",
   async:"false",
   url:"http://o.worlduc.com/api/sign.aspx?op=vote_getUserInfo&usessionid="+usessionid+"&token="+token,
   dataType:"jsonp",
   jsonp:"callback",
   jsonpCallback:"flightHandler",
   success:function(json)
   {
      if(json.flag=="ok")
      {
         alert("可以投票了!");
      }
      else if(json.flag=="no")
      {
         alert("验证超时,请重新登录!");
       }

    }

});
string method=Request["op"];
switch(method)
{
  case "vote_getUserInfo":
    Vote_GetUserInfo();
    break;
}
public void Vote_GetUserInfo()   
{
   string usessionid = Request["usessionid"];
   string token = Request["token"];
   string callback = Request["callback"];
   string strInfo = GetUserInfo(usessionid, token);
   Newtonsoft.Json.Linq.JObject infoList = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strInfo);
   if (infoList["result"] != null)
   {
       string result = infoList["result"].ToString();
       if (result == "000000") //验证用户成功,是本人
       {
           //这里返回json 加上callback就成了jsonp为了实现跨域访问
	   string tempOk = "{\"flag\":\"ok\"}";   
	   Response.Write(string.Format("{0}({1})",callback,tempOk));
	   Response.End();
        }
       else
       {
	   string tempNo = "{\"flag\":\"no\"}";
	   Response.Write(string.Format("{0}({1})",callback,tempNo));
	   Response.End(); 
        }

    }

}


href=http://download.csdn.net/download/qq_27421041/9859527


.net解析  别人跨域访问  并传过来的json包 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.IO;

namespace signLogin.tools.xtdx
{
	public partial class login : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			//Response.Write("okok");   
			//Response.End();     

			string postContent=AnalyzeJson();
			string email=AnalyzeJsonData(postContent);
			Response.Write(email);
		}

		public string AnalyzeJson()
		{
			Stream postData = Request.InputStream;
			StreamReader sRead = new StreamReader(postData);
			string postContent = sRead.ReadToEnd();
			sRead.Close();
			if (postContent != null || postContent != "")
			{
				return postContent;
			}
			else
			{ return "no"; }

		}
		public string AnalyzeJsonData(string postContent)
		{
			Newtonsoft.Json.Linq.JObject info = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(postContent);
			string key = info["key"].ToString();
			string email = info["email"].ToString();
			if (key == "worlducandxtdx")
			{
				return email;
			}
			else
			{
				return "null"; 
			}
		}




	}
}

 ----------------------------------

另一个单点登录跨域案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO; 
using System.Text;  
using System.Net;
using System.Xml;
using System.Configuration;
using System.Security.Cryptography.X509Certificates;  

public partial class api_xtdx_login : System.Web.UI.Page 
{
	public string successGuid = "";
    protected void Page_Load(object sender, EventArgs e)
    {
		string CASHOST = "http://202.197.224.171/zfca/";
		//string CASHOST = ConfigurationManager.AppSettings["casLoginURL"].ToString();

		ServicePointManager.CertificatePolicy = new MyPolicy(); 

		string tkt = Request.QueryString["ticket"];
		string service = Request.Url.GetLeftPart(UriPartial.Path); 
		if (tkt == null || tkt.Length == 0)
		{
			string redir = CASHOST + "login?" + 
			  "service=" + service;
			Response.Redirect(redir);
			return;
		}

		string validateurl = CASHOST + "serviceValidate?" +
		  "ticket=" + tkt + "&" +
		  "service=" + service;
		StreamReader Reader = new StreamReader(new WebClient().OpenRead(validateurl));
		string resp = Reader.ReadToEnd();

		NameTable nt = new NameTable();
		XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
		XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
		XmlTextReader reader = new XmlTextReader(resp, XmlNodeType.Element, context);

		string netid = null;
		while (reader.Read())
		{
			if (reader.IsStartElement())
			{
				string tag = reader.LocalName;
				if (tag == "user")
					netid = reader.ReadString();
			}
		}
		reader.Close();
		if (netid == null)
		{
			//Label1.Text = "CAS returned to this application, but then refused to validate your identity.";
			Response.Write("CAS returned to this application, but then refused to validate your identity."); 
		}
		else
		{  
			string net = "430000995289@worlduc.com";
			string key = "worlducandxtdx";
			//string keyAndEmailJson = "{\"key\":\"" + key + "\",\"email\":\"" + netid + "\"}";
			string keyAndEmailJson = "{\"key\":\"" + key + "\",\"email\":\"" + net + "\"}";
			string urlJson = "http://119.90.41.20/tools/xtdx/login.aspx";
			string guid = GetCallBack(urlJson, keyAndEmailJson);
			if (guid !="" )  
			{
				successGuid = guid; 
			}
		} 
 
    }

	public static string GetCallBack(string url, string param) 
	{
		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
		request.Method = "POST";
		request.ContentType = "application/json;charset=UTF-8";
		byte[] payload = System.Text.Encoding.UTF8.GetBytes(param);
		request.ContentLength = payload.Length;
		Stream writer = request.GetRequestStream();
		writer.Write(payload, 0, payload.Length);
		writer.Close();
		HttpWebResponse response = (HttpWebResponse)request.GetResponse();
		Stream s = response.GetResponseStream();
		StreamReader Reader = new StreamReader(s, Encoding.UTF8);
		string StrDate = "";
		string strValue = "";
		while ((StrDate = Reader.ReadLine()) != null)
		{
			strValue += StrDate ;
		}
		return strValue;
	}

}

public class MyPolicy : ICertificatePolicy
{
	public bool CheckValidationResult(
		  ServicePoint srvPoint
		, X509Certificate certificate
		, WebRequest request
		, int certificateProblem)
	{
		return true; 
	} 
}

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="api_xtdx_login" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <style type="text/css">  
    </style>
    <script type="text/javascript">
        jQuery(document).ready(function () {
            var guid = jQuery("#hidGuid").val(); 
            if (guid != "") {
                JsonpVisitNet(guid);
            }
        });
        function JsonpVisitNet(guid) {
            jQuery.ajax({
                type: "get",
                async: "false",
                url: "http://119.90.41.20/tools/xtdx/login.aspx?op=visitNet&guid=" + guid,
                dataType: "jsonp",
                jsonp: "callback",
                jsonpCallback: "flightHandler",
                success: function (json) {
                    if (json.flag == "ok") {
                        window.location.href = "http://119.90.41.20/SpaceManage/default.aspx";
                    }
                    else if (json.flag == "no") {
                        alert("登录失败!");
                    }

                }

            });
        }
      
   </script>
</head>
<body>
    <form id="form1" runat="server">
    <input type="hidden" value="<%=this.successGuid %>" id="hidGuid" />
    <div>
      <%--  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>--%>
    </div>
    </form>
</body>
</html>
-------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.IO;

namespace signLogin.tools.xtdx
{
	public partial class login : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			//Response.Write("okok");   
			//Response.End();     

			if (!string.IsNullOrEmpty(Request["op"]))
			{
				string method = Request["op"];
				if (method == "visitNet")
				{
					VisitNet();
				}
			}
			else
			{
				string postContent = AnalyzeJson();
				string email = AnalyzeJsonData(postContent);
				Response.Write(email);
			}

		}

		public string AnalyzeJson()
		{
			Stream postData = Request.InputStream;
			StreamReader sRead = new StreamReader(postData);
			string postContent = sRead.ReadToEnd();
			sRead.Close();
			if (postContent != null || postContent != "")
			{
				return postContent;
			}
			else
			{ return "no"; }

		}
		public string AnalyzeJsonData(string postContent)
		{
			Newtonsoft.Json.Linq.JObject info = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(postContent);
			string key = info["key"].ToString();
			string email = info["email"].ToString();
			if (key == "worlducandxtdx")
			{
				return email;
			}
			else
			{
				return "null"; 
			}
		}

		public void VisitNet()
		{
			string guid=Request["guid"];
			string callback = Request["callback"];
  
			//下发cookie 

			string tempOk = "{\"flag\":\"ok\"}";
			Response.Write(string.Format("{0}({1})", callback, tempOk));
			//Response.Write("ok");
			Response.End();
		}




	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值