CDH 5.16.2实现Hue界面自动登录
1、需求背景
项目需要用到hue界面做SQL查询,需要每次点击按钮后跳转到Hue登录界面,但是每个访问项目的人都需要登录Hue界面很不实际。
2、修改Hue界面的前端代码实现界面的自动登录
2.1、Hue登陆界面的前端源代码位置
/opt/cloudera/parcels/CDH/lib/hue/desktop/core/src/desktop/templates/login.mako
2.2、将login.mako修改为如下代码即可
需要知道那些地方更改的,可以将自己的login.mako和这个login.mako做代码对比(详细代码内容见,附1)。
2.3、在url中添加账号密码信息到项目连接里面就可以实现自动登录
http://localhost:8889/hue/accounts/login?next=/&username=admin&password=admin
2.4、重启Hue
3、附页
3.1、附1
<script>
function GetRequest() {
var url = location.search;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest;
};
$(document).ready(function () {
var urlParams = GetRequest();
if (urlParams.username) {
$('#id_username').val(urlParams.username)
}
if (urlParams.password) {
$('#id_password').val(urlParams.password)
}
if ((urlParams.username || "").length > 0 && (urlParams.password || "").length > 0) {
setTimeout(function() {
$("form").submit()
}, 200)
}
$("form").on("submit", function () {
window.setTimeout(function () {
$(".logo").find("img").addClass("waiting");
}, 1000);
});
%if 'AllowAllBackend' in backend_names:
$('#id_password').val('password');
%endif
%if backend_names == ['OAuthBackend']:
$("input").css({"display": "block", "margin-left": "auto", "margin-right": "auto"});
$("input").bind('click', function () {
window.location.replace('/login/oauth/');
return false;
});
%endif
% if next:
var $redirect = $('input[name="next"]');
$redirect.val($redirect.val() + window.location.hash);
% endif
});
</script>