meteorsa 2022-12-17 12:19 采纳率: 25%
浏览 45

springboot 项目输入了正确的账号密码却登录错误

通过控制台打印了code的值我发现并没有报错,而是code=0,所以我认为问题出在后端

methods:{
    submitForm(){
      let params = new URLSearchParams();
      params.append("name",this.ruleForm.username);
      params.append("password",this.ruleForm.password);
      console.log(this.ruleForm.username);
      console.log(this.ruleForm.password);
      getLoginStatus(params)
          .then((res) =>{
            if(res.code == 1){
              this.notify("登录成功","success");
            }else{
              console.log(res.code);
              this.notify("登录失败","error");
            }
          });
    }
  }
}

到后端后我第一时间查看了dao和controller层的内容,却没有看出什么差错
Controller

public class AdminController {
    @Autowired
    private AdminService adminService;

    @RequestMapping(value = "/admin/login/status",method = RequestMethod.POST)
    public Object loginStatus(HttpServletRequest request, HttpSession session){
        JSONObject jsonObject=new JSONObject();
        String name=request.getParameter("name");
        String password=request.getParameter("password");
        boolean flag=adminService.verifyPassword(name,password);
        if(flag){
            jsonObject.put(Consts.CODE,1);
            jsonObject.put(Consts.MSG,"登录成功");
            session.setAttribute(Consts.NAME,name);
            return jsonObject;
        }
        jsonObject.put(Consts.CODE,0);
        jsonObject.put(Consts.MSG,"用户名或密码错误");
        return jsonObject;
    }
}


Dao


public interface AdminMapper {
    /*
    *检验密码是否正确
    */
    public int verifyPassword(String username,String password);
}


没看出哪错了我又去检查adminmapper.xml的mybatis语句有没有写错,然后看了数据库的数据发现我调用的数据没有写错

<mapper namespace="com.lx.music.dao.AdminMapper">
    <resultMap id="BaseResultMap" type="com.lx.music.domain.Admin">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="password" jdbcType="VARCHAR" property="password"/>
    </resultMap>

    <select id="verifyPassword" resultType="java.lang.Integer">
            select count(*) from admin where name=#{username} and password=#{password}
    </select>
</mapper>

这个问题已经困扰了我两天,希望有人能给我解决

  • 写回答

3条回答 默认 最新

  • wux_labs 2022-12-17 12:40
    关注

    你的

    public int verifyPassword(String username,String password);
    

    返回的是int,你在controller中接收用的是bool。
    你需要先确认,select count(*)的结果是多少:0、1、>1?
    Mapper类里面需要添加参数名称注解:

    public int verifyPassword(@Param("username") String username,@Param("password") String password);
    

    Service没问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月17日

悬赏问题

  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口