login.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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 (data) {
  35. reject(JSON.parse(data.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: 120,
  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. });
  69. }
  70. },
  71. login: async function () {
  72. let _t = this;
  73. var loginName = this.settings.username;
  74. var password = this.settings.password;
  75. localStorage.setItem("password", password);
  76. _t.firstLogin(loginName).catch((firstLoginRes) => {
  77. //console.log("firstLoginRes: ", firstLoginRes);
  78. var md1 = hex_md5(password); //第1次加密
  79. var md2 = hex_md5(loginName + md1); //第2次加密
  80. var md3 = hex_md5(md2); //第3次加密
  81. var md4 = hex_md5(loginName + ":" + firstLoginRes.realm + ":" + md3); //第4次加密
  82. var signature = hex_md5(md4 + ":" + firstLoginRes.randomKey); //第5次加密
  83. $.ajax({
  84. type: "POST",
  85. url: this.settings.URL + "/videoService/accounts/authorize",
  86. contentType: "application/json", //如果提交的是json数据类型,则必须有此参数,表示提交的数据类型
  87. dateType: "json",
  88. async: false,
  89. data: JSON.stringify({
  90. userName: loginName,
  91. signature: signature,
  92. randomKey: firstLoginRes.randomKey,
  93. encryptType: "MD5",
  94. clientType: "winpc",
  95. pid: 2548,
  96. }),
  97. beforeSend: function (xhr) {
  98. xhr.setRequestHeader("X-Subject-Token", "");
  99. xhr.setRequestHeader(
  100. "Content-Type",
  101. "application/json;charset=UTF-8"
  102. );
  103. },
  104. success: function (jsonResult) {
  105. if (typeof jsonResult === "string") {
  106. if (jsonResult && JSON.parse(jsonResult).token) {
  107. localStorage.setItem("token", JSON.parse(jsonResult).token);
  108. localStorage.setItem("userId", JSON.parse(jsonResult).userId);
  109. localStorage.setItem("url", _t.settings.URL);
  110. localStorage.setItem("userName", loginName);
  111. // _t.settings.token = JSON.parse(jsonResult).token;
  112. console.log("localStorage-->", localStorage);
  113. _t.keepalive();
  114. // window.location.href = "./pages/菜单.html";
  115. }
  116. } else {
  117. if (jsonResult && jsonResult.token) {
  118. localStorage.setItem("token", jsonResult.token);
  119. localStorage.setItem("userId", jsonResult.userId);
  120. localStorage.setItem("url", _t.settings.URL);
  121. localStorage.setItem("userName", loginName);
  122. // _t.settings.token = JSON.parse(jsonResult).token;
  123. console.log("localStorage-->", localStorage);
  124. _t.keepalive();
  125. // window.location.href = "./pages/菜单.html";
  126. }
  127. }
  128. },
  129. error: function (data) {
  130. let msg = JSON.parse(data.responseText).message;
  131. $(".loginTip .error-wrap .error").html(msg);
  132. $(".loginTip").show();
  133. },
  134. });
  135. });
  136. },
  137. signOut() {
  138. let _t = this;
  139. $.ajax({
  140. type: "POST",
  141. url: _t.settings.URL + "/videoService/accounts/unauthorize",
  142. contentType: "application/json", //如果提交的是json数据类型,则必须有此参数,表示提交的数据类型
  143. async: false,
  144. dateType: "json",
  145. data: JSON.stringify({
  146. userName: localStorage.getItem("userName"),
  147. token: localStorage.getItem("token"),
  148. }),
  149. beforeSend: function (xhr) {
  150. xhr.setRequestHeader("X-Subject-Token", localStorage.getItem("token"));
  151. xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  152. //xhr.setRequestHeader("Origin",null);
  153. },
  154. success: function (jsonResult) {
  155. localStorage.clear();
  156. window.location.href = "../login.html";
  157. },
  158. error: function (data) {
  159. //obj
  160. if (JSON.parse(data.responseText).message === "invalid token") {
  161. window.location.href = "../login.html";
  162. }
  163. },
  164. });
  165. },
  166. };