CDH 5.16.2实现Hue界面自动登录

1、需求背景

项目需要用到hue界面做SQL查询,需要每次点击按钮后跳转到Hue登录界面,但是每个访问项目的人都需要登录Hue界面很不实际。

2、修改Hue界面的前端代码实现界面的自动登录

2.1、Hue登陆界面的前端源代码位置

  1. /opt/cloudera/parcels/CDH/lib/hue/desktop/core/src/desktop/templates/login.mako

2.2、将login.mako修改为如下代码即可

需要知道那些地方更改的,可以将自己的login.mako和这个login.mako做代码对比(详细代码内容见,附1)。
image.png

2.3、在url中添加账号密码信息到项目连接里面就可以实现自动登录

  1. http://localhost:8889/hue/accounts/login?next=/&username=admin&password=admin

2.4、重启Hue

3、附页

3.1、附1

  1. <script>
  2. function GetRequest() {
  3. var url = location.search;
  4. var theRequest = new Object();
  5. if (url.indexOf("?") != -1) {
  6. var str = url.substr(1);
  7. strs = str.split("&");
  8. for (var i = 0; i < strs.length; i++) {
  9. theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
  10. }
  11. }
  12. return theRequest;
  13. };
  14. $(document).ready(function () {
  15. var urlParams = GetRequest();
  16. if (urlParams.username) {
  17. $('#id_username').val(urlParams.username)
  18. }
  19. if (urlParams.password) {
  20. $('#id_password').val(urlParams.password)
  21. }
  22. if ((urlParams.username || "").length > 0 && (urlParams.password || "").length > 0) {
  23. setTimeout(function() {
  24. $("form").submit()
  25. }, 200)
  26. }
  27. $("form").on("submit", function () {
  28. window.setTimeout(function () {
  29. $(".logo").find("img").addClass("waiting");
  30. }, 1000);
  31. });
  32. %if 'AllowAllBackend' in backend_names:
  33. $('#id_password').val('password');
  34. %endif
  35. %if backend_names == ['OAuthBackend']:
  36. $("input").css({"display": "block", "margin-left": "auto", "margin-right": "auto"});
  37. $("input").bind('click', function () {
  38. window.location.replace('/login/oauth/');
  39. return false;
  40. });
  41. %endif
  42. % if next:
  43. var $redirect = $('input[name="next"]');
  44. $redirect.val($redirect.val() + window.location.hash);
  45. % endif
  46. });
  47. </script>