我正在寻找为我的应用程序创建(REST)API.初始/主要目的是供移动应用程序(iPhone,Android,Symbian等)使用.我一直在研究基于Web的API的身份验证和授权的不同机制(通过研究其他实现).我已经掌握了大部分基本概念,但我仍在寻找一些领域的指导.我想做的最后一件事就是重新发明轮子,但我找不到任何符合我标准的标准解决方案(不过我的标准是我的误导,所以也可以随意批评).此外,我希望API对于使用它的所有平台/应用程序都是相同的.
我会继续向oAuth抛弃我的反对意见,因为我知道这可能是第一个提供的解决方案.对于移动应用程序(或更具体地说是非Web应用程序),离开应用程序(转到Web浏览器)进行身份验证似乎是错误的.此外,没有办法(我知道)浏览器将回调返回给应用程序(特别是跨平台).我知道有几个应用程序可以做到这一点,但它只是感觉不对,并且在应用程序用户体验中取得了突破.
外部开发人员将请求API帐户.他们将得到一个apikey和apisecret.每个请求至少需要三个参数.
需要apikey来识别发出请求的应用程序.时间戳的作用与oauth_nonce类似,可以避免/减轻重放攻击.哈希确保请求实际是从给定apikey的所有者发出的.
对于经过身份验证的请求(代表用户完成的请求),我仍然未决定使用access_token路由或用户名和密码哈希组合.无论哪种方式,在某些时候都需要用户名/密码组合.因此,当它发生时,将使用几条信息(apikey,apisecret,timestamp)+密码的散列. 我喜欢这方面的反馈. 仅供参考,他们必须首先对密码进行哈希处理,因为我没有在没有散列的情况下将密码存储在我的系统中.
仅供参考,这不是要求如何构建/构建API,一般只是如何仅在应用程序内处理身份验证和授权.
对于只需要apikey作为请求的一部分的API,如何防止apikey所有者以外的其他人能够看到apikey(因为明确发送)并过多地请求推送它们超过使用限制?也许我只是在想这个,但是不应该有一些东西需要验证是否已向apikey所有者验证了请求?在我的情况下,这是apisecret的目的,它不会被显示/传输而不被散列.
说到哈希,md5和hmac-sha1怎么样?当所有值都用足够长的数据(即apisecret)进行散列时,这真的很重要吗?
我之前一直在考虑为用户密码哈希添加每用户/行盐.如果我这样做,应用程序如何能够在不知道使用的盐的情况下创建匹配的哈希?
首先,这不是固定顶部导航的主体填充顶部问题.
body { padding-top: 40px; }
Run Code Online (Sandbox Code Playgroud)
我有一个导航栏,无论好坏,都有大量的数据/信息.我遇到的问题是,当导航栏分成多行(完全没问题)时,它会重叠内容(坏).
以下是我所看到/经历的一个例子. http://jsfiddle.net/jsuggs/ZaMs3/7/
有没有人有一个聪明的JavaScript解决方案来改变身体填充或当导航栏分成多行时强制崩溃的方法?
更新
这是我最终使用的.我不得不添加一些额外的填充并组合加载和调整大小事件.
$(window).on('load resize', function() {
$('body').css({"padding-top": $(".navbar").height() + 30 + "px"});
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用git设置我的(Zend Framework)开发环境(或者更重要的是我的目录结构).但是,我的基本问题实际上与所涉及的特定库无关,但更重要的是如何让git完成我想要的东西.
我打算让我的项目根目录/home/jsuggs/project.
我还将与Zend Framework(ZF),Doctrine和其他库一起工作,但我只关注ZF,因为一个解决方案可能与其他库的解决方案相同.
我将克隆ZF2存储库/home/jsuggs/zf2.
我想/home/jsuggs/project/application/library/Zend参考一下/home/jsuggs/zf2/library/Zend.
我希望能够在两个存储库(项目和zf2)上本地工作,其中zf2中的切换分支直接影响项目.
我的问题是我如何设置Git,以便深层嵌套的库可以在开发期间引用我的本地版本,但也可以在部署到生产中时设置为(其他/任意)位置?
我还想避免路径是绝对的,所以如果其他人在项目上工作,那么库路径将不会引用我的主目录.
我正在研究使用符号链接和git子模块,但想知道这种类型的设置是否有"最佳实践".而且,我完全有可能做错了所以请随意说"只做X".