溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Druid自動登錄的方法

發(fā)布時間:2021-07-01 11:58:46 來源:億速云 閱讀:377 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“Druid自動登錄的方法”,在日常操作中,相信很多人在Druid自動登錄的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Druid自動登錄的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Druid 如何自動登錄

首先說明一下,為什么要自動登錄

  • 必須要有密碼,否則別人直接訪問項目地址+"/druid"就可以訪問,不安全;

  • 不想有二次登錄(不解釋);

實現(xiàn)思路

  1. 菜單配置路徑 toDruid;

  2. 跳轉(zhuǎn)頁面后,ajax觸發(fā) doDruid.json 請求;

  3. 后臺編寫Filter,判斷路徑是 doDruid 后,將地址更改為登錄地址;

如何確認登錄地址

直接在Druid登錄頁面,按F12,可以看到相關(guān)代碼

Form表單:

<form id="loginForm" method="post" autocomplete="off">
  	<fieldset>
  	  	<div id="alertInfo" class="alert alert-error clearfix" >
  	  		The username or password you entered is incorrect.
	  	</div>
      	<div class="clearfix">
          	<input type="text" placeholder="用戶名" name="loginUsername" autofocus="autofocus">
      	</div>
      	<div class="clearfix">
          	<input type="password" placeholder="密碼" name="loginPassword">
      	</div>
      	<button id="loginBtn" class="btn btn-primary" type="button">Sign in</button>
      	<button class="btn" type="reset">Reset</button>
  	</fieldset>
</form>

ajax提交代碼:

$.ajax({
  type: 'POST',
  url: "submitLogin",
  data: $("#loginForm").serialize(),
  success: function(data) {
	if("success" == data)
		location.href = "index.html";
	else {
		$("#alertInfo").show();
		$("#loginForm")[0].reset();
		$("input[name=loginUsername]").focus();
	}
  },
  dataType: "text"
});
可以發(fā)現(xiàn)

登錄接口為:"/submitLogin" 請求方式為:post 請求數(shù)據(jù)類型為:text 請求參數(shù)為:loginUsername=druid&loginPassword=druid

如何通過Filter實現(xiàn)

菜單配置toDruid,跳轉(zhuǎn)本系統(tǒng)某個頁面,此頁面調(diào)用doDruid.json接口。 頁面Ajax請求 /doDruid ,F(xiàn)ilter 獲取 /doDruid 更改路徑為 /submitLogin,并添加參數(shù)賬號和密碼。

過濾器Filter:

HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = ((HttpServletResponse) servletResponse);

String requestUrl = request.getRequestURL().toString();
// 針對druid做自動登錄
if(requestUrl.contains("moni/druid/doDruid.json")){
    String queryString = "loginUsername=druid&loginPassword=druid";
    // 獲取完整路徑
    StringBuffer url = new StringBuffer(requestUrl);
    // 獲取路徑加上項目名稱
    String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getServletContext().getContextPath()).append("/").toString();
    /** 構(gòu)造新地址,其實就是druid的登錄地址 */
    URL newUrl = new URL(tempContextUrl + "druid/submitLogin?" + queryString);
    response.setStatus(307);
    response.setHeader("Location", newUrl.toString());
    response.setHeader("Connection", "close");
    //允許所有跨域請求
    response.addHeader("Access-Control-Allow-Origin", "*");
}

前端頁面:

$(function(){
    autoLogin();
})
/** 自動登錄 @author gaoyuan */
function autoLogin(){
    var loadingLayer = layer.load(1, {shade: [0.1,'#fff']});//loading
    $.ajax({
        type: 'get',
        url: '${ctx}/moni/druid/doDruid.json?timeStamp='+new Date().getTime(),
        dataType: "text",
        data: {},
        success: function (data) {
            layer.close(loadingLayer);
            if(data == "success"){
                location.href = "${contextPath}/druid";
            }else{
                layer.msg('自動登錄出錯,請手動登錄!', {icon: 2}, function(){location.href = "${contextPath}/druid";});
            }
        },error:function(){
            layer.close(loadingLayer);
        }
    });
}

關(guān)于Druid的設(shè)置就不過多介紹了,網(wǎng)上到處都有

此時訪問 前端頁面,觸發(fā)Ajax,會自動進行登錄,登錄成功后,會跳轉(zhuǎn)druid頁面,大功告成!

到此,關(guān)于“Druid自動登錄的方法”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI