首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保护API路由?

如何保护API路由?
EN

Stack Overflow用户
提问于 2015-07-27 06:14:03
回答 3查看 4K关注 0票数 2

我正在试图找出在JSON路由中保护数据的最佳方法,这将在客户端与我的角控制器对话。

我有一些以JSON格式返回数据的路由,我将给出一个示例:

/api/events -返回所有事件

/api/events/:slug -只返回一个事件

/api/bookings -返回所有预订

/api/bookings/:slug -只返回一次预订

我搜索了很多,找到了两个答案,一个是域保护,另一个是标记保护,所以。哪一个是合适的?

令牌保护是如何工作的?如果我发送一个任何人都能在我的客户端代码中找到的令牌,那么它就有点没用了,对吧?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-27 06:58:05

建议和基本解释;

对rest客户端使用基于令牌的身份验证。还可以为rest后端指定cors过滤器。

在cors筛选器中指定访问-控制-允许-原产地只允许您的域,因此在客户端用户知道令牌,但另一个域或本地他/她不能发送任何请求受限区域。

代码语言:javascript
运行
复制
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在请求中发送检索到的令牌。

根据你的第二个问题进行基本表征;

代码语言:javascript
运行
复制
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

根据您的第一个问题,同时使用令牌过滤器和corsfilter。

票数 2
EN

Stack Overflow用户

发布于 2015-07-27 06:59:49

令牌被称为JWT,代表JSON令牌。它们是验证用户身份的主要和非常简单的方法之一。

JWT是由三部分组成的长字符串,由点组成。每一个都是base64编码的:

  • 第一个名为header,包含有关令牌的一些基本信息。
  • 第二个是有效载荷。下面是要在客户端和api之间传输的存储信息。通常是用户id之类的。这样,api就可以对用户进行身份验证。
  • 第三部分是签名。这是使令牌安全的部分。签名由报头和有效载荷组成,它们使用只有api知道的秘密编码。

因此,JWT生命周期非常简单:

  1. 您在用户中注册/注册,并将存储在用户浏览器的本地或cookie存储中的JWT发送给客户端。
  2. 使用AngularJS,您可以创建一个拦截器,该拦截器将使用授权头向每个请求发送令牌。
  3. 在您想要保护的每个路由上的api中,您将使用一个中间件来解码JWT并检查用户id是否与数据库中的用户匹配。这样,您将保护您的路线免受未经授权的请求。

当然,您可以找到使用JWT、AngularJS中的拦截器和Node.js中的中间件的不错的第三方库。

塞特利泽是一个非常好的前端库,用于AngularJS,为您提供方便的本地身份验证,以及使用许多社交网络(如facebook、twitter、github等)的非常简单的身份验证。它包括了拦截器,这样您就不需要自己编写它了,而且它还有很多用于服务器端代码的示例。

有关JWT的更多信息,您一定要查看我的文章:用于身份验证的基于Cookies的Json Web令牌

此外,我还将为您提供一个关于Pluralsight的非常好的课程的链接,该课程给我提供了许多关于AngularJS、NodeJS和JWT身份验证的知识:创建具有角、节点和令牌身份验证的应用程序

祝你好运:)

票数 1
EN

Stack Overflow用户

发布于 2015-07-31 15:06:48

你可能对我刚创造的回购感兴趣。它是一个使用Json令牌进行令牌身份验证的基本节点API。正如其他一些人所指出的,在创建用户或登录时,将创建并存储客户端的令牌。这是通过每个请求在授权头中发送的,系统确定该令牌的用户是否拥有访问该端点的授权。

这是回购

中生成令牌。

/server/services/tokenAuth.js

要保护端点,只需向受保护的路由添加isAuthorized即可。这叫

/server/policies/isAuthorized.js

进行实际检查

这种回购仍在进行中,但应该能够帮助您开始使用JWT。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31646040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档