Javascript 如何保护node.js中的api路由
我正试图找出在JSON路由中保护数据的最佳方法,该路由将在客户端与我的angular控制器通信 我有一些以JSON格式返回数据的路由,我将给出一个示例:Javascript 如何保护node.js中的api路由,javascript,json,angularjs,node.js,Javascript,Json,Angularjs,Node.js,我正试图找出在JSON路由中保护数据的最佳方法,该路由将在客户端与我的angular控制器通信 我有一些以JSON格式返回数据的路由,我将给出一个示例: /api/events-返回所有事件 /api/events/:slug-只返回一个事件 /api/bookings-返回所有预订 /api/bookings/:slug-返回所有预订 我搜索了很多,我找到了两个答案,域保护和令牌保护,所以。。哪一个是正确的 代币是如何保护的?如果我发送了一个任何人都能在我的客户代码中找到的令牌,那就没用了,对
/api/events
-返回所有事件/api/events/:slug
-只返回一个事件
/api/bookings
-返回所有预订/api/bookings/:slug
-返回所有预订
我搜索了很多,我找到了两个答案,域保护和令牌保护,所以。。哪一个是正确的
代币是如何保护的?如果我发送了一个任何人都能在我的客户代码中找到的令牌,那就没用了,对吧?一个建议和基本解释 对rest客户端使用基于令牌的身份验证。您还可以为rest后端指定cors筛选器 在cors筛选器中指定Access Control Allow Origin以仅允许您的域,以便在客户端用户知道令牌,但另一个域或本地用户不能发送任何请求限制区域
Access-Control-Allow-Origin: http://www.yourdomain.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: X-Requested-With, Content-Type
使用授权标头authorization:Bearer userToken
在请求中发送检索到的令牌
根据第二个问题的基本令牌身份验证流程
Client tries to login -> Server check username pass etc. and sends token to client -> Client saves token in localStorage or cookie -> Sending token in request with Authorization header -> Server tokenfilter checks is token valid -> accessed restricted area
根据您的第一个问题,同时使用tokenfilter和corsfilter。标记称为JWT,代表JSON Web标记。它们是验证用户身份的主要且非常简单的方法之一 JWT是一条由点分隔的三部分组成的长字符串。每个都是base64编码的:
- 第一个称为header,包含一些关于令牌的基本信息李>
- 第二个是有效载荷。下面是要在客户端和api之间传输的存储信息。通常是一个用户id左右。这样api就可以对用户进行身份验证李>
- 第三部分是签名。这是使令牌安全的部分。签名由头和有效载荷组成,有效载荷用只有api知道的秘密编码
祝你好运:)你可能对我刚刚创建的回购感兴趣。它是一个基本的节点API,使用Json Web令牌进行令牌身份验证。正如其他一些人所说的,在创建用户或登录时,会在客户端创建并存储令牌。这将与每个请求一起在授权标头中发送,系统将确定该令牌的用户是否具有访问该端点的授权 令牌是在 /服务器/services/tokenAuth.js 要保护端点,只需将已授权的添加到受保护的路由。这叫 /服务器/policies/isAuthorized.js 进行实际检查
该回购协议仍在进行中,但应该能够帮助您开始使用JWT 您始终可以为将要使用您的API的每个用户生成唯一的API密钥。然后,此密钥应该是每个请求的一部分,以便您可以检查它是否有效。但是如何在客户端保护此密钥?谢谢!这就是我正在寻找的。。但是如果你知道的话,告诉我一些事情。我在这里搜索,发现一个人说Express.js已经阻止了CORS。下面是一个关于在Express.js中启用CORS的好例子