实现多后台跳转自动登录

场景

有几十个后台,每次都需要找地址,再输入账号登录且所有的后台账号密码相同,仅仅是地址不同。且后台都是在不同的服务器上,需要的仅仅是一个跳板机管理而已

实现思路

将地址分类,利用select下拉框决定地址,添加输入框接收账号密码 ,提交的时候向选定地址跳转并实现自动登录到管理页面

具体实现

地址选定很简单就不赘述了,主要在如何发送请求并跳转,java是不能直接像浏览器直接请求然后跳转,而且会有各种问题,跨域,session过期等等,如果有人知道怎么用java实现麻烦教我一下。先看关键代码 js,利用js伪造表单提交

function sta(data){
        window.location=data;
        function PostSubmit() {
            var postUrl =  data;//提交地址
            var loginName = document.getElementById("loginName").value;//获取账号
            var password=document.getElementById("password").value;//获取密码
            var ExportForm = document.createElement("FORM");//创建一个表单属性
            document.body.appendChild(ExportForm);//添加一个节点
            ExportForm.method = "POST";//设置表单的提交方式
            var newElement = document.createElement("input");//创建输入框
            newElement.setAttribute("name", "loginName");//设置输入框属性,这个name 一般情况下要和原登录后台接收账号的输入框相同
            newElement.setAttribute("type", "hidden");//设置类型

            var newElement2 = document.createElement("input");//同理
            newElement2.setAttribute("name", "password");
            newElement2.setAttribute("type", "hidden");
            ExportForm.appendChild(newElement);//把属性添加进表单
            ExportForm.appendChild(newElement2);
            newElement.value = loginName;//设置属性值
            newElement2.value = password;
            ExportForm.action = postUrl;//提交地址
            ExportForm.submit();//提交动作
        };

这是什么原理呢?
其实也很简单,仔细分析下,请求到最后登录的流程,简单来说就几步,从页面接收到需要的参数,然后通过Ajax或者form表单等等提交,再由后台服务器对数据进行校验,在跳转或者其他操作。再简化点,我们需要做的就是获取参数再提交,参数获取好解决,重点在怎么提交。现在就直接在浏览器模拟出表单及参数提交等要素,就能成功发送数据外加跳转。

java模拟post提交也是同理,但是java模拟提交时只能获得响应内容,无法对浏览器的跳转等操作进行相同的复制操作。

如果有缺点,或者更好的解决办法务必联系我,谢谢

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现记住密码或者自动登录功能,可以使用cookie或session来存储用户信息。具体实现步骤如下: 1. 在登录页面添加一个复选框,让用户选择是否记住密码或自动登录。 2. 在后台处理登录验证时,如果用户选择了记住密码或自动登录,就在cookie或session中保存用户信息,例如用户名和密码或者用户ID等。 3. 在用户下次访问该网站时,先检查cookie或session中是否存在用户信息,如果存在,则直接跳转到用户主页,实现自动登录;如果不存在,则跳转登录页面,让用户重新登录。 以下是一个使用cookie实现记住密码或自动登录的示例: ```jsp <% // 处理登录请求 String username = request.getParameter("username"); String password = request.getParameter("password"); String remember = request.getParameter("remember"); // 验证用户名和密码是否正确 boolean isValidUser = validateUser(username, password); if (isValidUser) { // 如果用户选择了记住密码或自动登录,就创建一个cookie保存用户信息 if ("on".equals(remember)) { Cookie cookie = new Cookie("userInfo", username + ":" + password); cookie.setMaxAge(7 * 24 * 60 * 60); // 设置cookie有效期为7天 response.addCookie(cookie); } // 将用户信息保存到session中 HttpSession session = request.getSession(); session.setAttribute("userInfo", username); // 跳转到用户主页 response.sendRedirect("main.jsp"); } else { // 登录失败,返回登录页面 response.sendRedirect("login.jsp?error=1"); } %> ``` 在用户下次访问网站时,可以在页面加载时检查cookie中是否存在用户信息,如果存在,则直接跳转到用户主页: ```jsp <% // 检查cookie中是否存在用户信息 String userInfo = null; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("userInfo".equals(cookie.getName())) { userInfo = cookie.getValue(); break; } } } // 如果存在用户信息,则直接跳转到用户主页 if (userInfo != null) { String[] parts = userInfo.split(":"); String username = parts[0]; String password = parts[1]; boolean isValidUser = validateUser(username, password); if (isValidUser) { HttpSession session = request.getSession(); session.setAttribute("userInfo", username); response.sendRedirect("main.jsp"); } } %> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值