千家信息网

Druid自动登录的方法

发表于:2024-10-11 作者:千家信息网编辑
千家信息网最后更新 2024年10月11日,这篇文章主要介绍"Druid自动登录的方法",在日常操作中,相信很多人在Druid自动登录的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Druid自动登录的方法"
千家信息网最后更新 2024年10月11日Druid自动登录的方法

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

Druid 如何自动登录

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

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

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

实现思路

  1. 菜单配置路径 toDruid;

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

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

如何确认登录地址

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

Form表单:

The username or password you entered is incorrect.

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自动登录的方法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0