栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

前后端分离spring security中loadUserByUsername参数name为空

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前后端分离spring security中loadUserByUsername参数name为空

原因:因为前端这样发送的请求数据格式是json格式的数据,而SpringSecurity的配置则是需要提交的数据形式是表单格式的

解决:需要在前端发送的axios请求中设置成表单提交的格式,并且提交的数据要进行转换成字符串的形式。

  1. 检查前端传回的参数名称是否是username和password,spring security默认的参数名称是username和password,如果不是,可能更改前端的形参,也可以在WebSecurityConfigurerAdapter的configure实现接口里面添加你的参数名称
在后端设置前端传回的参数名称
http.
   ...//省略
  .formLogin()
  .usernameParameter("username")
  .passwordParameter("password")
  .permitAll()
  ...//省略
  1. 更改前端js有两种方式
更改前
	//登录
    login() {
      //1.验证校验规则
      this.$refs.loginFormRef.validate(async vaild => {
        if (!vaild) return;
        const {data: res} = await this.$http.post("login", this.loginForm)//访问后台
        if (res.flag == "ok") {
          this.$message.success("登陆成功!!!");
          // console.log(res.user);
          window.sessionStorage.setItem("user", res.user);//将信息存在session中
          await this.$router.push({path: "/home"})//页面路由跳转
        } else {
          this.$message.error("登陆失败");
        }
      })
    }
更改后(第一种)
    //登录
    login() {
      //1.验证校验规则
      this.$refs.loginFormRef.validate(async vaild => {
        if (!vaild) return;
        let ret = ''
        for (let it in this.loginForm) {
          ret += encodeURIComponent(it) + '=' + encodeURIComponent(this.loginForm[it]) + '&'
        }
        const {data: res} = await this.$http.post("login", ret)//访问后台
        console.log(res)
        if (res.success == true) {
          this.$message.success("登陆成功!!!");
          // console.log(res.user);
          window.sessionStorage.setItem("user", res.data);//将信息存在session中
          await this.$router.push({path: "/home"})//页面路由跳转
        } else {
          this.$message.error("登陆失败");
        }
      })
    }
更改后(第二种)
    //登录
    login() {
      //1.验证校验规则
      this.$refs.loginFormRef.validate(async vaild => {
        if (!vaild) return;
        this.$http.post("login", qs.stringify(this.loginForm), {
          // 设置成表单提交
          headers: {"Content-Type": "application/x-www-form-urlencoded"}
        }).then(res => {
          // 操作。。。
          console.log(res.data)
          if (res.data.success == true) {
            this.$message.success("登陆成功!!!");
            window.sessionStorage.setItem("user", res.data.user);//将信息存在session中
            this.$router.push({path: "/home"})//页面路由跳转
          } else {
            this.$message.error("登陆失败!!!");
          }
        })
      })
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号