我知道这不是第一次在StackOverflow中处理该主题,但是,我有一些问题我无法找到答案或其他问题反对答案.
I am doing a rather simple REST API (Silex-PHP) to be consumed initially by just one SPA (backbone app). I don't want to comment all the several authentication methods in this question as that topic is already fully covered on SO. I'll basically create a token for each user, and this token will be attached in every request that requires authentication by the SPA. All the SPA-Server transactions will run under HTTPS. For now, my decision is that the …
这似乎是一个广泛问的问题,在阅读了大量关于这个主题的文档后,我仍然不确定是否正确理解了所有内容(我认为愚蠢是一个可能的答案;)).
我正在尝试构建一个为用户提供服务的API.用户将通过Facebook或任何OpenId提供商连接(我将Facebook分开,因为他们实现了自己的连接系统).
(我认为这是一个很好的方法,因为我不会存储用户的密码,并且在类似的Gawker问题的情况下最终会有更少的问题.)
当客户端(Web应用程序,移动应用程序等)向API 发出请求时,必须与请求一起发送指示符,以便确定哪个用户正在使用该应用程序.这通常通过在身份验证期间定义的令牌使用.
而对于认证,我无法找到任何有价值的例子,教程,了解如何正确地实现它的解释.
我(试着)解释一下:
在我(快乐护理熊的精彩世界)中,我将项目分为不同部分:
据我所知,每当有人询问如何实现RESTful API身份验证时,会弹出三个主要答案:
因为我不会存储用户的密码,所以第一个用于我,但另外两个让我感到困惑.
但OAuth和OpenId 并不相同,一个(OpenId)代表身份验证(问题的基础),其中第二个(OAuth)代表授权!
当Twitter为其API实现OAuth时,他们没有实现身份验证系统,有一种方法可以指示用户应用程序X希望访问用户帐户(在各种访问级别).如果用户当前未登录Twitter,则他首先必须对自己进行身份验证,然后授权当前应用程序访问其数据.
所以,为了清理起来,OAuth不是一种身份验证机制,它是:
允许安全API授权的开放协议(来源:http://oauth.net/)
然后,验证用户的唯一方法是使用OpenId.然后,地狱成真了.
如果我以一个完全由html/css/js组成的Web应用程序为例,没有服务器端组件,则与API通信.
Web应用程序必须向API指示当前使用API的用户是X先生.
为此,Web应用程序会显示一个包含OpenId提供程序列表的弹出窗口,要求用户对自己进行身份验证.用户单击其中一个,重定向(或打开一个新弹出窗口)到OpenId提供程序,指示他的登录/通过,由OpenId提供程序进行身份验证,使用令牌返回成功(我简化了通信).
这很棒,网络应用现在知道用户真的是X先生.但是API仍然有任何线索!
最后,我的问题非常简单:我如何通过Web应用程序通过OpenId对x先生进行身份验证,然后,如何通过Web应用程序和api保存这是当前正在使用Web应用程序的先生X的信息当然还有API.
非常感谢您的帮助 !
- 编辑格式
我有一组嵌套的评论.我的目标是在单独悬停每个评论时显示"回复"选项.这意味着我不希望"回复"选项显示我正在悬停的评论的父/兄弟/子女.
我发现的唯一类似问题是:我可以控制CSS选择:悬停在嵌套元素上吗?我甚至不确定他的需求是否相同,而且小提琴似乎也不起作用.
我准备了一个小提琴,所以你最好明白我的意思:
.comment {
padding: 10px;
border: 1px solid black;
margin-top: 10px;
}
.text {} .comment:hover > .reply {
display: inline-block;
}
.reply {
display: none;
}
.children-comments {
margin-left: 50px;
margin-top: 10px;
}Run Code Online (Sandbox Code Playgroud)
<div class="comment">
<a class="text">wohoo</a>
<a class="reply">reply</a>
<div class="children-comments">
<div class="comment">
<a class="text">wohoo</a>
<a class="reply">reply</a>
<div class="children-comments">
</div>
</div>
<div class="comment">
<a class="text">wohoo</a>
<a class="reply">reply</a>
<div class="children-comments">
<div class="comment">
<a class="text">wohoo</a>
<a class="reply">reply</a>
<div class="children-comments">
<div class="comment">
<a class="text">wohoo</a>
<a class="reply">reply</a>
<div …Run Code Online (Sandbox Code Playgroud)我试图将一对键值添加到一个数组,其当前值为所有那些不以'_'开头的属性.由于某种原因,合并将"key"(即slug)的值替换为字符串"key".
例如,当slug是键中没有以'_'开头的唯一属性时,
key = slug
value = something
Run Code Online (Sandbox Code Playgroud)
它的行为如下:
{% for key,value in app.request.attributes.all %}
{% if '_' != key | slice(0, 1) %}
{{ dump(key) }} // string(4) "slug"
{% set params = params | merge({ key : value}) %}
{{ dump(key) }} // string(4) "slug"
{% endif %}
{% endfor %}
{{ dump(params) }} // array(1) { ["key"]=> string(9) "something" }
Run Code Online (Sandbox Code Playgroud)
我已经添加了转储在它们旁边返回的内容.
最终转储返回
array(1) { ["key"]=> string(9) "something" }
Run Code Online (Sandbox Code Playgroud)
虽然我在期待
array(1) { ["slug"]=> string(9) "something" }
Run Code Online (Sandbox Code Playgroud)
我说这是一个类似的问题,Twig忘记了数组密钥, …
另一种方式来问是,如果你真的只想与保存在localStorage的(补充水分)的数据开始您的应用程序和保存每Redux的状态变化到localStorage的(坚持)使用终极版-坚持用你自己喜欢的解决方案更好丹阿布拉莫夫在这里解释一下?
我明白了终极版 - 坚持自带了很多其他功能,而我自己开始使用它能够使用终极版 - 坚持 - 交叉表(要能应对不同的选项卡上运行的应用程序之间的变化),但我不知道是否是过度使用它以用于最基本的场景.特别是因为它更难理解,有时会做有趣的事情,比如随机调用persist/REHYDRATE.
我错过了这里明显的一切吗?谢谢