java后端:关于登录校验的一个小误区?

@PostMapping("/login")
    public String login(String username, String password) {
        dfdfs user = mapper.select(username);
        System.out.println(user);
        System.out.println(password);
        System.out.println(user.getPassword());
        System.out.println(password==user.getPassword());
        System.out.println(password.equals(user.getPassword()));

这个是一个post接口,user是通过前端传过来的数据来查询的账号,password是前端输入的密码,

user.getPassword是数据库的密码,下面是我的运行结果:

可以看到输入的密码和数据库的密码都是123,但password==user.getPassword结果是false,但

password.equal(user.getPassword)为true。

后来我网上搜了下,好像是==不仅要求数值相等,还要求地址相同? 不清楚,反正写登录界面判断密码时用equal就对了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的登录后端校验的源码,使用了 Node.js 和 Express 框架: ```javascript const express = require('express'); const app = express(); const bodyParser = require('body-parser'); // 使用 JSON 格式解析请求体 app.use(bodyParser.json()); // 模拟用户数据 const users = [ { username: 'user1', password: 'pwd1' }, { username: 'user2', password: 'pwd2' }, { username: 'user3', password: 'pwd3' } ]; // 登录接口 app.post('/login', (req, res) => { const { username, password } = req.body; // 检查用户名和密码是否匹配 const user = users.find(user => user.username === username && user.password === password); if (!user) { res.status(401).send('用户名或密码错误'); return; } // 生成随机的 token,模拟用户登录成功 const token = Math.random().toString(36).slice(2); res.json({ token }); }); // 需要登录才能访问的接口 app.get('/protected', (req, res) => { const token = req.headers.authorization; if (!token) { res.status(401).send('请先登录'); return; } // 检查 token 是否合法 if (Math.random() < 0.5) { res.status(403).send('无权访问'); return; } res.send('欢迎访问'); }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 前端可以通过发送 POST 请求到 `/login` 接口进行登录,例如: ```javascript fetch('/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: 'user1', password: 'pwd1' }) }) .then(response => response.json()) .then(data => { // 登录成功,获得 token const token = data.token; // 保存 token 到本地存储,供后续使用 localStorage.setItem('token', token); }); ``` 前端访问需要登录才能访问的接口时,需要在请求头中带上 token: ```javascript const token = localStorage.getItem('token'); fetch('/protected', { headers: { 'Authorization': token } }) .then(response => { if (response.status === 200) { // 访问成功 } else if (response.status === 401) { // 未登录 } else if (response.status === 403) { // 无权访问 } else { // 其他错误 } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值