首页 > web前端 > js教程 > 验证、认证和授权

验证、认证和授权

Linda Hamilton
发布: 2025-01-17 02:35:11
原创
746 人浏览过

Validation, Authentication and Authorization

内容概述

本文扩展了之前的教程,涵盖了使用 Express.js 创建基本 CRUD API,重点关注关键的安全方面:验证、身份验证和授权。 我们将以前面的示例为基础,因此建议熟悉该材料。 完整的项目可在 GitHub 上获取(下面提供的链接)。

关键概念

  • 验证:确保用户提供的数据符合预定义的规则和标准。 这对于安全至关重要,可以防止 SQL 注入等漏洞。 一些资源强调了稳健验证的重要性(下面提供的链接)。

  • 身份验证:验证用户的身份。这通常涉及根据存储的记录检查凭据(例如用户名/电子邮件和密码)。

  • 授权:确定允许用户执行哪些操作。 这根据用户角色和权限控制对资源的访问。

实施验证

我们将为 nameamountdate 字段创建验证函数:

  • name: 字符串,非空,10-255 个字符。
  • amount: 数字或数字字符串,正数,非空。
  • date: 字符串,可选(如果省略,则默认为当前日期),YYYY-MM-DD 格式。

这些函数(位于validations.js)利用类型检查和基本格式验证。 可以添加更全面的验证(例如日期范围检查)。

<code class="language-javascript">// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };</code>
登录后复制
登录后复制

添加身份验证和授权

为了进行演示,我们将使用内存数据存储(对象数组)来存储用户和费用。 这适合生产。

data.js 文件存储用户和费用数据:

<code class="language-javascript">// data.js (excerpt)
let users = [
    { id: "...", email: "...", password: "..." }, //Example User
    // ...more users
];

let expenditures = [
    { id: "...", userId: "...", name: "...", amount: ..., date: "..." }, //Example Expense
    // ...more expenses
];

module.exports = { expenditures, users };</code>
登录后复制

注册端点 (/users/signup)

此端点创建新用户。 它验证电子邮件和密码,检查电子邮件重复项,生成 UUID,并(仅适用于本演示)存储原始密码。 返回 Base64 编码的身份验证令牌 (email:UUID)。 为了简单起见,省略了密码哈希,但它在生产环境中至关重要。

登录端点 (/users/login)

此端点对现有用户进行身份验证。 它会验证凭据并在成功时返回 Base64 编码的身份验证令牌。

受保护端点

为了保护端点(例如,/expenditures),我们需要在请求标头(Authorization 标头)中使用身份验证令牌。令牌被解码,用户被验证,并且只返回用户自己的数据。

<code class="language-javascript">// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };</code>
登录后复制
登录后复制

结论

本文提供了 Node.js/Express.js API 中验证、身份验证和授权的基本介绍。 请记住,此处演示的安全措施是出于教育目的而简化的,并且不应在生产系统中使用。 生产就绪的应用程序需要强大的密码哈希、安全令牌管理(推荐 JWT)和数据库集成。

资源

(请记住将括号中的占位符替换为实际链接。)

以上是验证、认证和授权的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板