- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在设计一个 Erlang/OTP 应用程序,它将通过 RESTful API 公开其服务 (SOA)。
构成后端的服务将是数据库服务、价格计算服务等。
客户端可以有多种类型:Web 客户端、移动客户端、Asterisk 服务器客户端(需要在数据库服务中查找用户记录),甚至还有我不打算拥有且还不知道的客户端。客户端会以不同的方式使用 RESTful API:有些会使用所有服务,有些会只使用部分服务(SOA 方式)。
我主要关心的是身份验证/授权。
我不能使用 Ruby on Rails 的内置身份验证/授权,因为 Web 客户端只是许多可能的客户端中的一个客户端,它们将通过 RESTful API 使用应用程序。
所以,我的问题是:
最佳答案
只需检查其他人是如何做到这一点的,例如在这篇文章中:Authentication on Facebook .
一般来说,这个想法是客户端调用一个单独的 API 调用,以便向系统验证自己的身份。系统可以接受任何客户或仅接受来自已注册客户列表的客户。一旦系统验证了客户端,它就会发出一个特殊的 token ,然后客户端将在所有 API 调用中使用该 token 。在 Facebook 文档中,它被称为访问 token 。如果客户端尝试在没有有效 token 的情况下调用 API,系统会将此报告为错误,并且在某些情况下可能会阻止客户端。
在 REST 中, token 可以简单地作为 URL、POST 中的另一个参数或直接作为 JSON 中的附加字段发送。以 POST 或 JSON 形式发送它可能是最好的,因为它可以保持 URL 干净(并且不会与可能基于 URL 的任何缓存冲突)。
这是这个想法的优点,但通常需要考虑更多的事情。例如, token 应该难以猜测,因此客户端无法在未通过系统身份验证的情况下重新创建有效 token 。此外,如果在指定时间段内没有调用 API,系统可能需要使 token 过期。
要回答您问题的最后一部分,需要指出一些库:
关于rest - 二郎/OTP : authorization/authentication in RESTful applications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789729/
在我见过的所有 Erlang 主管示例中,通常有一个“主”主管负责监督整个树(或者至少是主管树中的根节点)。如果“master”-supervisor 坏了怎么办? “大师”-主管应该如何监督?有什么
美好的一天,我的小服务有以下设置: -module(mrtask_net). -export([start/0, stop/0, listen/1]). -define(SERVER, mrtask_
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 12 个月前关闭。 Improve this question
您好,我是 Erlang 的新手,但设法创建了一个简单的 TCP 服务器,它以被动模式接受客户端并显示消息。每次新客户端连接到服务器时,我都会生成一个新进程。有没有一种方法可以使用客户端连接时生成的进
当记录具有特定字段时,我需要返回 true 的函数,反之亦然。示例: -record(robot, {name, type=industrial, ho
早安 我正在尝试对以下函数执行校验和 Data = [>,"81", >, >, [[50,48,49,48,49,48,50,54,45,49,53,":",52
我做过一些函数式编程,并且有一些在线引用资料,所以我发现基本的 Erlang 编程很容易。 但由于我完成的过程/面向对象编程远多于函数式编程,我预计我的 Erlang 代码的样式或效率都不是很好。 任
我对 Erlang 很陌生。我试图找出列表索引是否超出范围(在尝试之前)所以我想用类似的东西做一个 if 子句 if lists:flatlength(A) {ok,NumberOfJumps+1}
我刚刚开始使用 Erlang(虽然有一些 lisp 背景)并且有一个关于列表模式匹配的问题。 如果我说 [Head | Tail] = [1, 2, 3]. 然后我得到 Head = 1 Tail =
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
使用 httpc 向某个服务器发出异步请求HTTP 客户端 httpc:request(get, {Url, []}, [], [{sync, false}, {stream, self}]) 其中
我很感兴趣 gen_tcp:accept 函数的限制是什么?我的意思是什么是最大并发连接数?或者如何配置? (gen_tcp 设置、ulimit 或其他)get_tcp 每秒可以接受多少连接? 最佳答
我有一个 OTP 应用程序。到目前为止,我有两个配置文件:rebar.config 和config/vm.args,后者在前者中被引用:{vm_args, "配置/vm.args". 在较大的文档中:
我在 Erlang 中有一个元素列表,我使用 list:foreach 遍历列表中的元素。有没有办法在遍历过程中跳出这个“foreach 循环”。例如:假设我想在列表 [2, 4, 5, 1, 2,
实现一个 Erlang 列表推导式,从列表中获取两个元素并创建一个新的列表列表。 我有这个代码 pair([], Acc) -> lists:reverse(Acc); pair(L, Acc0) -
有没有办法对节点进行 rpc 调用,但在该节点上显示输出,而不仅仅是在调用节点上(实际上,如果调用节点没有显示输出,我不会太烦恼)。 虽然我明白我可以使用 rpc:call( Node, erlang
我有一个元组列表,它们是 http header 。我想将列表转换为 JSON 对象。我尝试 mochijson2 但无济于事。 所以我有以下几点: [{'Accept',"text/html,app
我有这样的 list : [[[[{a,2},{s,w}],{e,1}],{d,l}]] 是否有一个函数可以删除所有元组,使它们都处于同一级别?像: [{a,2},{s,w},{e,1},{d,l}]
erlang shell 截断长项,例如: 6> lists:seq(1,1000). [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,2
我尝试使用 sqlite3:table_info/2 函数从 sqlite 数据库中提取表信息并收到错误消息。 {ok,Pid} = sqlite3:open(db3). Sql = >. sqlit
我是一名优秀的程序员,十分优秀!