login.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. var Package = function(url, options) {
  2. this.defaults = {
  3. //默认配置,可以通过option覆盖
  4. URL: url || localStorage.getItem("url"),
  5. token: "", //存储token
  6. };
  7. this.settings = Object.assign({}, this.defaults, options); //覆盖默认配置操作
  8. };
  9. Package.prototype = {
  10. firstLogin: function(loginName) {
  11. let _t = this;
  12. return new Promise((resolve, reject) => {
  13. $.ajax({
  14. type: "POST",
  15. url: this.settings.URL + "/videoService/accounts/authorize",
  16. contentType: "application/json", //如果提交的是json数据类型,则必须有此参数,表示提交的数据类型
  17. dateType: "json",
  18. data: JSON.stringify({
  19. userName: this.settings.username,
  20. clientType: "winpc",
  21. ipAddress: "", //可不传
  22. pid: 2548, //可不传
  23. }),
  24. beforeSend: function(xhr) {
  25. xhr.setRequestHeader("X-Subject-Token", "");
  26. xhr.setRequestHeader(
  27. "Content-Type",
  28. "application/json;charset=UTF-8"
  29. );
  30. },
  31. success: function(jsonResult) {
  32. resolve(jsonResult);
  33. },
  34. error: function(data1) {
  35. reject(JSON.parse(data1.responseText));
  36. },
  37. });
  38. });
  39. },
  40. keepalive: function() {
  41. let _t = this;
  42. if (localStorage.getItem("token")) {
  43. $.ajax({
  44. type: 'PUT',
  45. url: this.settings.URL + '/videoService/accounts/token/keepalive',
  46. contentType: 'application/json', //如果提交的是json数据类型,则必须有此参数,表示提交的数据类型
  47. dateType: 'json',
  48. data: JSON.stringify({
  49. token: localStorage.getItem('token'),
  50. duration: 86400,
  51. }),
  52. beforeSend: function(xhr) {
  53. xhr.setRequestHeader(
  54. 'X-Subject-Token',
  55. localStorage.getItem('token'),
  56. );
  57. xhr.setRequestHeader(
  58. 'Content-Type',
  59. 'application/json;charset=UTF-8',
  60. );
  61. },
  62. success: function(jsonResult) {
  63. // setTimeout(function() {
  64. // _t.keepalive();
  65. // }, 20000);
  66. },
  67. error: function(data) {
  68. localStorage.removeItem('token');
  69. _t.login();
  70. },
  71. });
  72. } else {
  73. setTimeout(() => {
  74. _t.login();
  75. }, 1000 * (_t.logincount++));
  76. }
  77. },
  78. logincount: 0,
  79. login: async function() {
  80. let _t = this;
  81. var loginName = this.settings.username;
  82. var password = this.settings.password;
  83. localStorage.setItem("password", password);
  84. localStorage.setItem('url', _t.settings.URL);
  85. try {
  86. if (window.dologin) {
  87. window.dologin();
  88. }
  89. } catch (error) {}
  90. console.log("_-------")
  91. _t.keepalive();
  92. // _t.firstLogin(loginName).catch((firstLoginRes) => {
  93. // //console.log("firstLoginRes: ", firstLoginRes);
  94. // var md1 = hex_md5(password); //第1次加密
  95. // var md2 = hex_md5(loginName + md1); //第2次加密
  96. // var md3 = hex_md5(md2); //第3次加密
  97. // var md4 = hex_md5(loginName + ":" + firstLoginRes.realm + ":" + md3); //第4次加密
  98. // var signature = hex_md5(md4 + ":" + firstLoginRes.randomKey); //第5次加密
  99. // $.ajax({
  100. // type: "POST",
  101. // url: this.settings.URL + "/videoService/accounts/authorize",
  102. // contentType: "application/json", //如果提交的是json数据类型,则必须有此参数,表示提交的数据类型
  103. // dateType: "json",
  104. // async: false,
  105. // data: JSON.stringify({
  106. // userName: loginName,
  107. // signature: signature,
  108. // randomKey: firstLoginRes.randomKey,
  109. // encryptType: "MD5",
  110. // clientType: "winpc",
  111. // pid: 2548,
  112. // expiredTime:86400,
  113. // }),
  114. // beforeSend: function(xhr) {
  115. // xhr.setRequestHeader("X-Subject-Token", "");
  116. // xhr.setRequestHeader(
  117. // "Content-Type",
  118. // "application/json;charset=UTF-8"
  119. // );
  120. // },
  121. // success: function(jsonResult) {
  122. // if (typeof jsonResult === "string") {
  123. // if (jsonResult && JSON.parse(jsonResult).token) {
  124. // localStorage.setItem("token", JSON.parse(jsonResult).token);
  125. // localStorage.setItem("userId", JSON.parse(jsonResult).userId);
  126. // localStorage.setItem("url", _t.settings.URL);
  127. // localStorage.setItem("userName", loginName);
  128. // // _t.settings.token = JSON.parse(jsonResult).token;
  129. // console.log("localStorage-->", localStorage);
  130. // _t.keepalive();
  131. // // window.location.href = "./pages/菜单.html";
  132. // }
  133. // } else {
  134. // if (jsonResult && jsonResult.token) {
  135. // localStorage.setItem("token", jsonResult.token);
  136. // localStorage.setItem("userId", jsonResult.userId);
  137. // localStorage.setItem("url", _t.settings.URL);
  138. // localStorage.setItem("userName", loginName);
  139. // // _t.settings.token = JSON.parse(jsonResult).token;
  140. // console.log("localStorage-->", localStorage);
  141. // _t.keepalive();
  142. // // window.location.href = "./pages/菜单.html";
  143. // }
  144. // }
  145. // },
  146. // error: function(data) {
  147. // let msg = JSON.parse(data.responseText).message;
  148. // $(".loginTip .error-wrap .error").html(msg);
  149. // $(".loginTip").show();
  150. // },
  151. // });
  152. // });
  153. },
  154. signOut() {
  155. let _t = this;
  156. $.ajax({
  157. type: "POST",
  158. url: _t.settings.URL + "/videoService/accounts/unauthorize",
  159. contentType: "application/json", //如果提交的是json数据类型,则必须有此参数,表示提交的数据类型
  160. async: false,
  161. dateType: "json",
  162. data: JSON.stringify({
  163. userName: localStorage.getItem("userName"),
  164. token: localStorage.getItem("token"),
  165. }),
  166. beforeSend: function(xhr) {
  167. xhr.setRequestHeader("X-Subject-Token", localStorage.getItem("token"));
  168. xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  169. //xhr.setRequestHeader("Origin",null);
  170. },
  171. success: function(jsonResult) {
  172. localStorage.clear();
  173. window.location.href = "../login.html";
  174. },
  175. error: function(data) {
  176. //obj
  177. if (JSON.parse(data.responseText).message === "invalid token") {
  178. window.location.href = "../login.html";
  179. }
  180. },
  181. });
  182. },
  183. };