更新 auth 路由 (2026-04-01)
This commit is contained in:
parent
2f050489af
commit
4359654d72
|
|
@ -16,17 +16,19 @@ const loginLimiter = rateLimit({
|
|||
router.post('/login', loginLimiter, async (req, res) => {
|
||||
try {
|
||||
const { username, password } = req.body;
|
||||
const trimmedUsername = username ? username.trim() : '';
|
||||
const trimmedPassword = password ? password.trim() : '';
|
||||
|
||||
if (!username || !password) {
|
||||
if (!trimmedUsername || !trimmedPassword) {
|
||||
return res.status(400).json({ success: false, message: '用户名和密码不能为空' });
|
||||
}
|
||||
|
||||
const user = await User.findOne({ username }).select('+password');
|
||||
const user = await User.findOne({ username: trimmedUsername }).select('+password');
|
||||
if (!user || user.status !== 'active') {
|
||||
return res.status(401).json({ success: false, message: '用户名或密码错误' });
|
||||
}
|
||||
|
||||
const isMatch = await comparePassword(password, user.password);
|
||||
const isMatch = await comparePassword(trimmedPassword, user.password);
|
||||
if (!isMatch) {
|
||||
return res.status(401).json({ success: false, message: '用户名或密码错误' });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,15 +22,17 @@ const loginLimiter = rateLimit({
|
|||
router.post('/login', loginLimiter, validate(schemas.login), async (req, res) => {
|
||||
try {
|
||||
const { phone, password } = req.body;
|
||||
const trimmedPhone = phone ? phone.trim() : '';
|
||||
const trimmedPassword = password ? password.trim() : '';
|
||||
|
||||
// 用 select(false) 主动拉取 password 字段
|
||||
const rider = await Rider.findOne({ phone }).select('+password');
|
||||
const rider = await Rider.findOne({ phone: trimmedPhone }).select('+password');
|
||||
if (!rider) {
|
||||
return res.status(401).json({ success: false, message: '手机号或密码错误' });
|
||||
}
|
||||
|
||||
// bcrypt 比对密码
|
||||
const isMatch = await comparePassword(password, rider.password);
|
||||
const isMatch = await comparePassword(trimmedPassword, rider.password);
|
||||
if (!isMatch) {
|
||||
return res.status(401).json({ success: false, message: '手机号或密码错误' });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,12 +17,14 @@ const loginLimiter = rateLimit({
|
|||
router.post('/login', loginLimiter, async (req, res) => {
|
||||
try {
|
||||
const { username, password } = req.body;
|
||||
if (!username || !password) {
|
||||
const trimmedUsername = username ? username.trim() : '';
|
||||
const trimmedPassword = password ? password.trim() : '';
|
||||
if (!trimmedUsername || !trimmedPassword) {
|
||||
return res.status(400).json({ success: false, message: '用户名和密码不能为空' });
|
||||
}
|
||||
|
||||
// 从 User 表查 store 类型账号
|
||||
const user = await User.findOne({ username, type: 'store' }).select('+password');
|
||||
const user = await User.findOne({ username: trimmedUsername, type: 'store' }).select('+password');
|
||||
// 查关联的门店
|
||||
const Store = require('../models/Store');
|
||||
const store = await Store.findOne({ storeId: user.storeId });
|
||||
|
|
@ -30,7 +32,7 @@ router.post('/login', loginLimiter, async (req, res) => {
|
|||
return res.status(401).json({ success: false, message: '用户名或密码错误' });
|
||||
}
|
||||
|
||||
const isMatch = await comparePassword(password, user.password);
|
||||
const isMatch = await comparePassword(trimmedPassword, user.password);
|
||||
if (!isMatch) {
|
||||
return res.status(401).json({ success: false, message: '用户名或密码错误' });
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue