Springboot登陆页面遇到的坑

本文档介绍了在SpringBoot项目中使用Thymeleaf和Spring Security进行登录验证,遇到的登录失败后重定向导致的问题及解决方案。同时,展示了如何通过Ajax实现用户名存在的实时验证,包括前端Ajax请求和后端控制器的响应处理。在修复登录失败后的重定向问题后,确保了登录页面的正常显示,并提供了关于Ajax验证的详细代码示例。

springboot+ thymeleaf+security+ajax

跳转页面model的值无法传递到前端页面

登陆页面如图
在这里插入图片描述
form表单:

 <form class="layui-form" th:action="@{/user/login}" method="post">
 <p style="color: red ;text-align: center;"  th:text="${lmsg}"th:if="${not #strings.isEmpty(lmsg)}" ></p>
 .........
 </form>

验证用户名和密码是否正确,否则提示“用户名密码错误”到p标签中

sessionn.setAttribute("lmsg", "用户名或密码错误");

正常来说应该用model.addAttribute()存放数据,但是跳转页面用的重定向,model的值无法传递到前端页面,我就偷了个懒,用session存放的数据,但弊端是一旦登陆失败,刷新登录页面,该数据依旧存在
在这里插入图片描述
这好嘛,这不好。
于是我在写完项目之后回过头又完善了一遍

model.addAttribute("lmsg", "用户名或密码错误");

跳转页面不用重定向,同时采用model存放数据
然后,测试了一遍,唉没问题,当我在登陆错误的页面再次登陆错误之后,问题来了


登陆失败返回登陆页面报404错误

在这里插入图片描述
emmmm,大家注意看上图的地址,是/user/user/login
,于是我就改了一下地址

    @RequestMapping("/login")

从/user/login改成了/login
然后,问题解决!登陆失败一万次地址栏还是/login,并不会user/循环。


ajax实现输入用户名之后判断用户名是否存在

控制层代码

    @RequestMapping("/user/name")
    @ResponseBody
    public String nameIsRepeat(String gname,Model model){
        String text;
        //查找表单提交的用户名是否存在,存在返回ok,不存在返回用户名不存在
        Graduate userByName = dao.findUserByName(gname);
        text = (userByName!=null?"ok":"用户名不存在");
        return text;
    }

ajax代码

<script>
        function f1() {
            $.post("/user/name", {"gname": $("#gname").val()}, function (data) {
                if (data.toString() == "ok") {
                //#是按id查找
                    $("#gname").css("color", "green")
                    $("#pp0").html(" ");
                } else {
                    $("#gname").css("color", "red");
                    $("#pp0").html(data.toString());
                }
            })
        }
    </script>

表单代码

<input type="text" id="gname" name="gname" required onblur="f1()" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
<p  id="pp0"  style="color: red ;text-align: center;"></p>

图示

  • 当用户存在时
    在这里插入图片描述
  • 当用户不存在时
    在这里插入图片描述

注意事项:

  • ajax后跟三个参数,分别为提交的url传给控制层的参数提交成功执行的方法,其中data接受的就是控制层返回的text
  • 控制层要加@ResponseBody注解
  • 控制层传入的参数gname必须和ajax{“gname”: $("#gname").val()}冒号左侧同名
<think>嗯,用户这次的问题很明确——想阻止谷歌浏览器每次启动时自动弹出配置窗口。结合之前的对话,用户已经尝试过一些配置操作(比如引用[2]提到的快捷方式参数修改),但似乎遇到了新的困扰。用户提供的四个引用中,引用[2]关于全屏启动的内容其实已经隐含了关键线索——通过快捷方式参数控制浏览器行为。而引用[4]提到的端口参数化方法也验证了这种思路的通用性。不过用户真正需要的不是添加功能而是关闭某功能,这需要逆向思维。深层需求可能是:用户在使用某些企业级或教育版Chrome时遇到强制配置弹窗(常见于学校机房或公司电脑),或者安装某些插件后导致浏览器行为异常。考虑到用户之前研究过跨域配置等开发者功能,应该有一定技术基础。解决方案的核心在于识别弹窗来源:1)如果是Chrome自身更新引导,清理注册表就能解决2)如果是第三方程序注入,需要检查启动项3)如果是组策略限制(企业环境常见),则需要更高权限操作最安全的切入点是从用户权限最高的层面开始排查——先检查快捷方式参数是否被植入启动配置页的指令。这里有个细节:配置页的URL通常是chrome://settings/onStartup,而强制跳转可能通过--launch-on-startup=force-url这类参数实现。用户没提操作系统类型,但引用[2]显示ta熟悉Windows注册表操作,所以优先给Windows方案。注册表路径HKEY_CURRENT_USER\Software\Policies下的chrome子项要特别检查,企业环境常用这里部署强制策略。最后那个临时退出技巧是实战经验:当用户被迫进入配置页时,在地址栏手动跳转about:blank可以立即打断引导流程,比强行关闭进程更优雅。</think> 根据您的需求,这是管理谷歌浏览器配置窗口的完整解决方案,按优先级排序操作: ### 一、关闭浏览器自动配置(根源处理) 1. **修改快捷方式属性**(推荐首选) - 右键浏览器快捷方式 → 选择「属性」 - 在「目标」栏删除类似以下参数: ```bash --force-first-run --no-first-run ``` - ✅ 正确格式示例(参数末尾有空格): ```bash "C:\Program Files\Google\Chrome\Application\chrome.exe" --kiosk ``` 2. **清理注册表残留**(Windows系统专用) - 按 `Win+R` 输入 `regedit` - 导航路径: ``` HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome ``` - 删除右侧 `ForceFirstRun` 和 `RestoreOnStartup` 键值 - 检查路径: ``` HKEY_CURRENT_USER\Software\Policies\Google\Chrome ``` ### 二、修改默认启动行为(直接生效) 1. **设置默认启动页** - 浏览器地址栏输入 `chrome://settings/onStartup` - 选择「打开特定页面」→ 添加 `about:blank`(空白页) 2. **配置文件重置**(终极方案) - 访问 `chrome://settings/reset` - 点击「将设置还原为原始默认值」→ 确认重置 > ⚠️ 会清除扩展、主题等个性化配置[^3] ### 三、解决特殊情况 ▶ **企业环境管控** 在组策略编辑器中(`gpedit.msc`)禁用: ``` 计算机配置 → 管理模板 → Google → Google Chrome → 禁用「显示首次运行体验」 ``` ▶ **临时强制退出技巧** 启动浏览器时出现配置页→在地址栏输入并访问: ``` chrome://quit ``` 立即关闭所有浏览器进程 --- ### 操作验证表 | 操作步骤 | 是否需重启 | 生效概率 | |---------------------------|-------------|----------| | 快捷方式参数清理 | 否 | 95% | | 注册表清理 | 是 | 80% | | 设置默认启动页 | 否 | 90% | | 重置浏览器配置 | 是 | 100% | > 📌 最佳实践:先用「快捷方式参数清理」+「设置默认启动页」,无效时再执行重置操作 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值