小编mez*_*zod的帖子

REST API上的用户注册/身份验证流程

我知道这不是第一次在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 …

authentication api rest web-applications asp.net-web-api

29
推荐指数
1
解决办法
2万
查看次数

如何从Web应用程序向API验证用户身份?

这似乎是一个广泛问的问题,在阅读了大量关于这个主题的文档后,我仍然不确定是否正确理解了所有内容(我认为愚蠢是一个可能的答案;)).

我正在尝试构建一个为用户提供服务的API.用户将通过Facebook或任何OpenId提供商连接(我将Facebook分开,因为他们实现了自己的连接系统).

(我认为这是一个很好的方法,因为我不会存储用户的密码,并且在类似的Gawker问题的情况下最终会有更少的问题.)

当客户端(Web应用程序,移动应用程序等)向API 发出请求时,必须与请求一起发送指示符,以便确定哪个用户正在使用该应用程序.这通常通过在身份验证期间定义的令牌使用.

而对于认证,我无法找到任何有价值的例子,教程,了解如何正确地实现它的解释.

我(试着)解释一下:

在我(快乐护理熊的精彩世界)中,我将项目分为不同部分:

  • RESTful API
  • 一个将使用api的网络应用程序.理想情况下,我正在考虑制作一个完整的html/css/js项目,没有任何服务器端工作(php/python/java或其他)
  • 移动应用程序
  • 一个windows/mac/linux应用程序

据我所知,每当有人询问如何实现RESTful API身份验证时,会弹出三个主要答案:

  • HTTP基本(最好是SSL)/摘要方式
  • OAuth的
  • 的OpenID

因为我不会存储用户的密码,所以第一个用于我,但另外两个让我感到困惑.

但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.

非常感谢您的帮助 !

- 编辑格式

openid authentication api rest

12
推荐指数
1
解决办法
2979
查看次数

仅在CSS中为嵌套元素选择立即悬停的元素

我有一组嵌套的评论.我的目标是在单独悬停每个评论时显示"回复"选项.这意味着我不希望"回复"选项显示我正在悬停的评论的父/兄弟/子女.

我发现的唯一类似问题是:我可以控制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)

html javascript css css-selectors

10
推荐指数
1
解决办法
117
查看次数

在twig中使用merge()时,键值被'key'替换

我试图将一对键值添加到一个数组,其当前值为所有那些不以'_'开头的属性.由于某种原因,合并将"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忘记了数组密钥, …

php merge key symfony twig

8
推荐指数
2
解决办法
7411
查看次数

为什么使用redux-persist而不是手动将状态保存到localStorage?

另一种方式来问是,如果你真的只想与保存在localStorage的(补充水分)的数据开始您的应用程序和保存每Redux的状态变化到localStorage的(坚持)使用终极版-坚持用你自己喜欢的解决方案更好丹阿布拉莫夫在这里解释一下

我明白了终极版 - 坚持自带了很多其他功能,而我自己开始使用它能够使用终极版 - 坚持 - 交叉表(要能应对不同的选项卡上运行的应用程序之间的变化),但我不知道是否是过度使用它以用于最基本的场景.特别是因为它更难理解,有时会做有趣的事情,比如随机调用persist/REHYDRATE.

我错过了这里明显的一切吗?谢谢

reactjs redux react-redux redux-persist

5
推荐指数
1
解决办法
5526
查看次数