温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Druid自动登录的方法

发布时间:2021-07-01 11:58:46 来源:亿速云 阅读:336 作者:chen 栏目:大数据

这篇文章主要介绍“Druid自动登录的方法”,在日常操作中,相信很多人在Druid自动登录的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Druid自动登录的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Druid 如何自动登录

首先说明一下,为什么要自动登录

  • 必须要有密码,否则别人直接访问项目地址+"/druid"就可以访问,不安全;

  • 不想有二次登录(不解释);

实现思路

  1. 菜单配置路径 toDruid;

  2. 跳转页面后,ajax触发 doDruid.json 请求;

  3. 后台编写Filter,判断路径是 doDruid 后,将地址更改为登录地址;

如何确认登录地址

直接在Druid登录页面,按F12,可以看到相关代码

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"
});
可以发现

登录接口为:"/submitLogin" 请求方式为:post 请求数据类型为:text 请求参数为:loginUsername=druid&loginPassword=druid

如何通过Filter实现

菜单配置toDruid,跳转本系统某个页面,此页面调用doDruid.json接口。 页面Ajax请求 /doDruid ,Filter 获取 /doDruid 更改路径为 /submitLogin,并添加参数账号和密码。

过滤器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();
    /** 构造新地址,其实就是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);
        }
    });
}

关于Druid的设置就不过多介绍了,网上到处都有

此时访问 前端页面,触发Ajax,会自动进行登录,登录成功后,会跳转druid页面,大功告成!

到此,关于“Druid自动登录的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI