在Angular/Node.js Web应用中,可以使用JWT(JSON Web Token)或会话验证来验证用户身份。下面是使用两种验证方法的代码示例:
使用JWT验证: 在Node.js服务器端,可以使用jsonwebtoken库来生成和验证JWT令牌。以下是一个示例:
const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';
// 生成JWT令牌
const generateToken = (user) => {
const payload = {
id: user.id,
username: user.username
};
const options = {
expiresIn: '1h' // 令牌有效期为1小时
};
return jwt.sign(payload, secretKey, options);
};
// 验证JWT令牌
const verifyToken = (token) => {
try {
return jwt.verify(token, secretKey);
} catch (error) {
return null; // 令牌无效
}
};
// 在路由中使用JWT验证
app.get('/api/protected', (req, res) => {
const token = req.headers.authorization;
if (!token) {
return res.status(401).json({ message: '未提供令牌' });
}
const decodedToken = verifyToken(token);
if (!decodedToken) {
return res.status(401).json({ message: '令牌无效' });
}
// 令牌验证通过,执行受保护的操作
// ...
});
在Angular前端,可以使用Angular的HttpClient来发送包含JWT令牌的请求。以下是一个示例:
import { HttpClient, HttpHeaders } from '@angular/common/http';
const apiUrl = 'http://localhost:3000/api/protected';
const authToken = 'your-jwt-token';
// 发送带JWT令牌的请求
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': `Bearer ${authToken}`
})
};
this.http.get(apiUrl, httpOptions).subscribe(
(response) => {
// 请求成功,执行操作
// ...
},
(error) => {
// 请求失败,处理错误
// ...
}
);
使用会话验证: 在Node.js服务器端,可以使用express-session库来处理会话验证。以下是一个示例:
const express = require('express');
const session = require('express-session');
const app = express();
// 配置会话
app.use(session({
secret: 'your-session-secret',
resave: false,
saveUninitialized: true,
cookie: { secure: false } // 仅在HTTPS上使用secure cookie
}));
// 在路由中使用会话验证
app.get('/api/protected', (req, res) => {
if (!req.session.user) {
return res.status(401).json({ message: '未登录' });
}
// 会话验证通过,执行受保护的操作
// ...
});
// 进行登录
app.post('/api/login', (req, res) => {
// 验证用户凭据
const user = {
id: 1,
username: 'john'
};
req.session.user = user;
res.json({ message: '登录成功' });
});
在Angular前端,可以使用Angular的HttpClient来发送带会话验证的请求。以下是一个示例:
import { HttpClient } from '@angular/common/http';
const apiUrl = 'http://localhost:3000/api/protected';
// 发送带会话验证的请求
this.http.get(apiUrl).subscribe(
(response) => {
// 请求成功,执行操作
// ...
},
(error) => {
// 请求失败,处理错误
// ...
}
);
以上是使用JWT验证和会话验证的示例代码。你可以根据自己的需求选择其中一种验证方法来实现身份验证。
上一篇:Angular/NodeJS - Mongoose 分页
下一篇:Angular/NX-Componentisnotaknownelement,butitisimportedinthemodule