public HttpResponseMessage SSOLogin(JObject ticketInfo) { var jsonParams = HttpUtil.Deserialize(ticketInfo); string ticket = jsonParams.ticket; string url = SSOServer + "serviceValidate?ticket=" + ticket + "&" + "service=" + MyServer; System.IO.StreamReader Reader = new System.IO.StreamReader(new System.Net.WebClient().OpenRead(url)); string resp = Reader.ReadToEnd(); Reader.Close(); System.Xml.NameTable nt = new System.Xml.NameTable(); System.Xml.XmlNamespaceManager nsmgr = new System.Xml.XmlNamespaceManager(nt); System.Xml.XmlParserContext context = new System.Xml.XmlParserContext(null, nsmgr, null, System.Xml.XmlSpace.None); System.Xml.XmlTextReader reader1 = new System.Xml.XmlTextReader(resp, System.Xml.XmlNodeType.Element, context); string netid = null; string debugMsg = ""; while (reader1.Read()) { debugMsg += reader1.LocalName + reader1.ReadString(); if (reader1.IsStartElement()) { string tag = reader1.LocalName; if (tag == "employeeNumber") { netid = reader1.ReadString(); } } } if (netid == null) { LogUtil.Log(Request, "登录", "Unknown", "Unknown", 0, "Fail", debugMsg, DateTime.Now.ToString()); return(new Response(2002, "请重试").Convert()); } User user = UserDao.GetUserById(netid.ToUpper()); if (user != null) { bool login = redis.IsSet(user.id); if (login) { string expiredToken = redis.Get <string>(user.id); redis.Delete(expiredToken); redis.Delete(user.id); } string uuid = System.Guid.NewGuid().ToString(); redis.Set(uuid, user.id, 15); redis.Set(user.id, uuid, 15); Dictionary <string, string> retData = new Dictionary <string, string> { { "authorization", uuid }, { "userId", user.id }, { "role", user.role.ToString() }, { "name", user.name }, { "is_accept", user.is_accept.ToString() } }; LogUtil.Log(Request, "登录", user.id, user.id, user.role, "", "SSO登录" + SSOServer, DateTime.Now.ToString()); return(new Response(1001, "登录成功", retData).Convert()); } return(new Response(2002, "ID不存在").Convert()); }