index.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. <!-- jQuery:操作 dom、发起请求等 -->
  7. <script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/2.1.2/jquery.min.js" type="application/javascript"></script>
  8. <script type="application/javascript">
  9. /**
  10. * 跳转单点登录
  11. */
  12. function ssoLogin() {
  13. const clientId = 'yudao-sso-demo-by-code'; // 可以改写成,你的 clientId
  14. const redirectUri = encodeURIComponent('http://127.0.0.1:18080/callback.html'); // 注意,需要使用 encodeURIComponent 编码地址
  15. const responseType = 'code'; // 1)授权码模式,对应 code;2)简化模式,对应 token
  16. window.location.href = 'http://127.0.0.1:1024/sso?client_id=' + clientId
  17. + '&redirect_uri=' + redirectUri
  18. + '&response_type=' + responseType;
  19. }
  20. /**
  21. * 修改昵称
  22. */
  23. function updateNickname() {
  24. const nickname = prompt("请输入新的昵称", "");
  25. if (!nickname) {
  26. return;
  27. }
  28. // 更新用户的昵称
  29. const accessToken = localStorage.getItem('ACCESS-TOKEN');
  30. $.ajax({
  31. url: "http://127.0.0.1:18080/user/update?nickname=" + nickname,
  32. method: 'PUT',
  33. headers: {
  34. 'Authorization': 'Bearer ' + accessToken
  35. },
  36. success: function (result) {
  37. if (result.code !== 0) {
  38. alert('更新昵称失败,原因:' + result.msg)
  39. return;
  40. }
  41. alert('更新昵称成功!');
  42. $('#nicknameSpan').html(nickname);
  43. }
  44. });
  45. }
  46. /**
  47. * 刷新令牌
  48. */
  49. function refreshToken() {
  50. const refreshToken = localStorage.getItem('REFRESH-TOKEN');
  51. if (!refreshToken) {
  52. alert("获取不到刷新令牌");
  53. return;
  54. }
  55. $.ajax({
  56. url: "http://127.0.0.1:18080/auth/refresh-token?refreshToken=" + refreshToken,
  57. method: 'POST',
  58. success: function (result) {
  59. if (result.code !== 0) {
  60. alert('刷新访问令牌失败,原因:' + result.msg)
  61. return;
  62. }
  63. alert('更新访问令牌成功!');
  64. $('#accessTokenSpan').html(result.data.access_token);
  65. // 设置到 localStorage 中
  66. localStorage.setItem('ACCESS-TOKEN', result.data.access_token);
  67. localStorage.setItem('REFRESH-TOKEN', result.data.refresh_token);
  68. }
  69. });
  70. }
  71. /**
  72. * 刷新令牌
  73. */
  74. function logout() {
  75. const accessToken = localStorage.getItem('ACCESS-TOKEN');
  76. if (!accessToken) {
  77. location.reload();
  78. return;
  79. }
  80. $.ajax({
  81. url: "http://127.0.0.1:18080/auth/logout",
  82. method: 'POST',
  83. headers: {
  84. 'Authorization': 'Bearer ' + accessToken
  85. },
  86. success: function (result) {
  87. if (result.code !== 0) {
  88. alert('退出登录失败,原因:' + result.msg)
  89. return;
  90. }
  91. alert('退出登录成功!');
  92. // 删除 localStorage 中
  93. localStorage.removeItem('ACCESS-TOKEN');
  94. localStorage.removeItem('REFRESH-TOKEN');
  95. location.reload();
  96. }
  97. });
  98. }
  99. $(function () {
  100. const accessToken = localStorage.getItem('ACCESS-TOKEN');
  101. // 情况一:未登录
  102. if (!accessToken) {
  103. $('#noLoginDiv').css("display", "block");
  104. return;
  105. }
  106. // 情况二:已登录
  107. $('#yesLoginDiv').css("display", "block");
  108. $('#accessTokenSpan').html(accessToken);
  109. // 获得登录用户的信息
  110. $.ajax({
  111. url: "http://127.0.0.1:18080/user/get",
  112. method: 'GET',
  113. headers: {
  114. 'Authorization': 'Bearer ' + accessToken
  115. },
  116. success: function (result) {
  117. if (result.code !== 0) {
  118. alert('获得个人信息失败,原因:' + result.msg)
  119. return;
  120. }
  121. $('#nicknameSpan').html(result.data.nickname);
  122. }
  123. });
  124. })
  125. </script>
  126. </head>
  127. <body>
  128. <!-- 情况一:未登录:1)跳转 ruoyi-vue-pro 的 SSO 登录页 -->
  129. <div id="noLoginDiv" style="display: none">
  130. 您未登录,点击 <a href="#" onclick="ssoLogin()">跳转 </a> SSO 单点登录
  131. </div>
  132. <!-- 情况二:已登录:1)展示用户信息;2)刷新访问令牌;3)退出登录 -->
  133. <div id="yesLoginDiv" style="display: none">
  134. 您已登录!<button onclick="logout()">退出登录</button> <br />
  135. 昵称:<span id="nicknameSpan"> 加载中... </span> <button onclick="updateNickname()">修改昵称</button> <br />
  136. 访问令牌:<span id="accessTokenSpan"> 加载中... </span> <button onclick="refreshToken()">刷新令牌</button> <br />
  137. </div>
  138. </body>
  139. <style>
  140. body { /** 页面居中 */
  141. border-radius: 20px;
  142. height: 350px;
  143. position: absolute;
  144. left: 50%;
  145. top: 50%;
  146. transform: translate(-50%,-50%);
  147. }
  148. </style>
  149. </html>