WSSubSysLogin.asmx.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. using SysBaseLibs;
  2. using SysDataLibs;
  3. using SysDataLibs.TableClass;
  4. using SysSecLibs;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Web;
  9. using System.Web.Services;
  10. using System.Xml.Serialization;
  11. namespace GSMarketSys.WS
  12. {
  13. /// <summary>
  14. /// WSSubSysLogin 的摘要说明
  15. /// </summary>
  16. [WebService(Namespace = "http://tempuri.org/")]
  17. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  18. [System.ComponentModel.ToolboxItem(false)]
  19. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
  20. // [System.Web.Script.Services.ScriptService]
  21. public class WSSubSysLogin : System.Web.Services.WebService
  22. {
  23. public WSSubSysLogin()
  24. {
  25. //如果使用设计的组件,请取消注释以下行
  26. //InitializeComponent();
  27. }
  28. [XmlInclude(typeof(LoginToAppResult))]
  29. [WebMethod(EnableSession = true)]
  30. public LoginToAppResult LoginToApp(string userNo, string password)
  31. {
  32. LoginToAppResult result = new LoginToAppResult();
  33. try
  34. {
  35. userNo = SysBaseLibs.Utils.AreaToSQL(userNo);
  36. // 登录到工商子系统时,传入的是加过密的密码,需要解密
  37. password = SysSecurity.Decrypt(password);
  38. string lcIP = HttpContext.Current.Request.ServerVariables.GetValues("REMOTE_ADDR")[0];
  39. string lcErrorMsg = string.Empty;
  40. bool lbLogin = SysDataLibs.UserSession.UserLogin(userNo, password, ref lcErrorMsg);
  41. if (lbLogin)
  42. {
  43. Sys_Log_info loSysLog = new Sys_Log_info();
  44. loSysLog.LogCommand = "Logion";
  45. loSysLog.LogDate = DateTime.Now.ToString();
  46. loSysLog.LogMessage = "用户 " + userNo + " LoginToApp成功";
  47. loSysLog.LogErrorMessage = "";
  48. loSysLog.SysLogType = ((int)LogType.System).ToString();
  49. loSysLog.UserId = userNo;
  50. loSysLog.UserHostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
  51. Sys_Log_info.LogMsg(loSysLog);
  52. ThreadLog.LogInfo("用户 " + userNo + " LoginToApp成功,IP:" + lcIP);
  53. // 记录GUID + Session
  54. string strGuid = System.Guid.NewGuid().ToString("N");
  55. UserSession session = System.Web.HttpContext.Current.Session[Contants.UserInfoId] as UserSession;
  56. LoginGUID.Instance.AddOne(strGuid, session);
  57. string strUrl = SysDataLibs.AppEnv.SysSetObj.GetString("SUBSYSLOGINREDIRECTURL");
  58. if (strUrl != "")
  59. {
  60. result.Flag = true;
  61. result.Message = "";
  62. strUrl += "?UserNo=" + userNo + "&GUID=" + strGuid;
  63. result.AuUrl = strUrl;
  64. }
  65. else
  66. {
  67. result.Flag = false;
  68. result.Message = "No setting for SUBSYSLOGINREDIRECTURL";
  69. result.AuUrl = "";
  70. }
  71. }
  72. else
  73. {
  74. Sys_Log_info loSysLog = new Sys_Log_info();
  75. loSysLog.LogCommand = "Logion";
  76. loSysLog.LogDate = DateTime.Now.ToString();
  77. loSysLog.LogMessage = "用户 " + userNo + " LoginToApp失败!";
  78. loSysLog.LogErrorMessage = lcErrorMsg;
  79. loSysLog.SysLogType = ((int)LogType.System).ToString();
  80. loSysLog.UserId = userNo;
  81. loSysLog.UserHostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
  82. Sys_Log_info.LogMsg(loSysLog);
  83. ThreadLog.LogInfo("用户 " + userNo + " LoginToApp失败,IP:" + lcIP);
  84. result.Flag = false;
  85. result.Message = lcErrorMsg;
  86. result.AuUrl = "";
  87. }
  88. }
  89. catch (Exception err)
  90. {
  91. result.Flag = false;
  92. string strTemp = "用户 " + userNo + " LoginToApp失败," + err.Message;
  93. ThreadLog.LogInfo(strTemp);
  94. }
  95. return result;
  96. }
  97. // 查询用户
  98. private Sys_Users_info GetUserInfo(string userid, SysBaseLibs.DBConnSql loConn)
  99. {
  100. Sys_Users_info loUserInfo = null;
  101. string lcSql = "select * from " + Tn.Sys_Users + " where "
  102. + Sys_Users_info.cIsLock + "='N' and " + Sys_Users_info.cUserCode + "='" + userid + "' and "
  103. + Sys_Users_info.cIsAudit + "='Y' ";
  104. SysBaseLibs.rsQuery loQuery = loConn.OpenQuery(lcSql);
  105. if (loQuery != null && loQuery.IsOpened && loQuery.RecCount == 1)
  106. {
  107. loUserInfo = new Sys_Users_info(loQuery.CurrentRow);
  108. }
  109. return loUserInfo;
  110. }
  111. [XmlInclude(typeof(LoginToAppResult))]
  112. [WebMethod(EnableSession = true)]
  113. public LoginToAppResult LoginOutOfApp(string userNo, string password)
  114. {
  115. LoginToAppResult result = new LoginToAppResult();
  116. result.Flag = false;
  117. result.Message = "";
  118. result.AuUrl = "";
  119. // 数据库连接
  120. DBConnSql DbConn = null;
  121. try
  122. {
  123. userNo = SysBaseLibs.Utils.AreaToSQL(userNo);
  124. string lcIP = HttpContext.Current.Request.ServerVariables.GetValues("REMOTE_ADDR")[0];
  125. DbConn = new DBConnSql();
  126. if (DbConn.Open())
  127. {
  128. Sys_Users_info loUsers = GetUserInfo(userNo, DbConn);
  129. if (loUsers != null)
  130. {
  131. // 登录到工商子系统时,传入的是加过密的密码,需要解密
  132. password = SysSecurity.Decrypt(password);
  133. if (loUsers.Password == password)
  134. {
  135. // 根据用户名称从LoginGUID中删除
  136. LoginGUID.Instance.RemoveUser(userNo);
  137. HttpContext.Current.Session.RemoveAll(); // 是否需要?
  138. ThreadLog.LogInfo("用户 " + userNo + " LoginOutOfApp成功,IP:" + lcIP);
  139. result.Flag = true;
  140. result.Message = "";
  141. string strUrl = SysDataLibs.AppEnv.SysSetObj.GetString("SUBSYSLOGOFFREDIRECTURL");
  142. if (strUrl == "")
  143. strUrl = "http://jsms.sipac.gov.cn/Default.aspx";
  144. result.AuUrl = strUrl;
  145. }
  146. else
  147. {
  148. result.Flag = false;
  149. result.Message = "Invalid password";
  150. ThreadLog.LogInfo("用户 " + userNo + " LoginOutOfApp失败,密码错误,IP:" + lcIP);
  151. }
  152. }
  153. else
  154. {
  155. result.Flag = false;
  156. result.Message = "Invalid user";
  157. ThreadLog.LogInfo("用户 " + userNo + " LoginOutOfApp失败,无效用户,IP:" + lcIP);
  158. }
  159. }
  160. }
  161. catch (Exception err)
  162. {
  163. result.Flag = false;
  164. string strTemp = "用户 " + userNo + " LoginOutOfApp失败," + err.Message;
  165. ThreadLog.LogInfo(strTemp);
  166. }
  167. finally
  168. {
  169. if (DbConn != null && DbConn.IsOpened)
  170. DbConn.Close();
  171. }
  172. return result;
  173. }
  174. // 明文密码的单点登录接口
  175. [XmlInclude(typeof(LoginToAppForNEResult))]
  176. [WebMethod(EnableSession = true)]
  177. public LoginToAppForNEResult LoginToAppForNE(string userNo, string password)
  178. {
  179. LoginToAppForNEResult result = new LoginToAppForNEResult();
  180. try
  181. {
  182. userNo = SysBaseLibs.Utils.AreaToSQL(userNo);
  183. string lcIP = HttpContext.Current.Request.ServerVariables.GetValues("REMOTE_ADDR")[0];
  184. string lcErrorMsg = string.Empty;
  185. bool lbLogin = SysDataLibs.UserSession.UserLogin(userNo, password, ref lcErrorMsg);
  186. if (lbLogin)
  187. {
  188. Sys_Log_info loSysLog = new Sys_Log_info();
  189. loSysLog.LogCommand = "Logion";
  190. loSysLog.LogDate = DateTime.Now.ToString();
  191. loSysLog.LogMessage = "用户 " + userNo + " LoginToAppForNE成功";
  192. loSysLog.LogErrorMessage = "";
  193. loSysLog.SysLogType = ((int)LogType.System).ToString();
  194. loSysLog.UserId = userNo;
  195. loSysLog.UserHostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
  196. Sys_Log_info.LogMsg(loSysLog);
  197. ThreadLog.LogInfo("用户 " + userNo + " LoginToAppForNE成功,IP:" + lcIP);
  198. // 记录GUID + Session
  199. string strGuid = System.Guid.NewGuid().ToString("N");
  200. UserSession session = System.Web.HttpContext.Current.Session[Contants.UserInfoId] as UserSession;
  201. LoginGUID.Instance.AddOne(strGuid, session);
  202. string strUrl = SysDataLibs.AppEnv.SysSetObj.GetString("SUBSYSLOGINREDIRECTURL");
  203. if (strUrl != "")
  204. {
  205. result.Flag = true;
  206. result.Message = "";
  207. result.GUID = strGuid;
  208. strUrl += "?UserNo=" + userNo + "&GUID=" + strGuid;
  209. result.AuUrl = strUrl;
  210. }
  211. else
  212. {
  213. result.Flag = false;
  214. result.Message = "No setting for SUBSYSLOGINREDIRECTURL";
  215. result.AuUrl = "";
  216. }
  217. }
  218. else
  219. {
  220. Sys_Log_info loSysLog = new Sys_Log_info();
  221. loSysLog.LogCommand = "Logion";
  222. loSysLog.LogDate = DateTime.Now.ToString();
  223. loSysLog.LogMessage = "用户 " + userNo + " LoginToAppForNE失败!";
  224. loSysLog.LogErrorMessage = lcErrorMsg;
  225. loSysLog.SysLogType = ((int)LogType.System).ToString();
  226. loSysLog.UserId = userNo;
  227. loSysLog.UserHostAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
  228. Sys_Log_info.LogMsg(loSysLog);
  229. ThreadLog.LogInfo("用户 " + userNo + " LoginToAppForNE失败,IP:" + lcIP);
  230. result.Flag = false;
  231. result.Message = lcErrorMsg;
  232. result.AuUrl = "";
  233. }
  234. }
  235. catch (Exception err)
  236. {
  237. result.Flag = false;
  238. string strTemp = "用户 " + userNo + " LoginToAppForNE失败," + err.Message;
  239. ThreadLog.LogInfo(strTemp);
  240. }
  241. return result;
  242. }
  243. }
  244. // LoginToApp方法返回结果
  245. [Serializable]
  246. public class LoginToAppResult
  247. {
  248. public bool Flag; // 用户帐号是否合法有效
  249. public string Message; // 无法通过验证的原因
  250. public string AuUrl; // 授权访问页面
  251. }
  252. // LoginToAppForNE方法返回结果
  253. [Serializable]
  254. public class LoginToAppForNEResult
  255. {
  256. public bool Flag; // 用户帐号是否合法有效
  257. public string Message; // 无法通过验证的原因
  258. public string GUID; // 登录成功后生成用户令牌
  259. public string AuUrl; // 授权访问页面
  260. }
  261. }