我在SO上发现了很多关于这个主题的问题,但是找不到任何回答这个问题的问题:
我应该使用用户名和密码,还是使用API密钥验证用户?每种方法的优缺点是什么?
我问这个是因为在我的API中,有几种方法我想锁定并验证用户是否可以访问某些文档或操作.我有点不愿意通过让用户使用他们的用户名和密码发送HTTP AUTH标头进行身份验证,因为它感觉不安全并且对用户来说更麻烦.另一方面,如果我使用API密钥,那么用户创建密码的重点是什么?因为他们将不再使用它来访问API的功能.
UPDATE
如果其他读者对我最终使用的内容感到好奇,我决定复制亚马逊的验证方式(这里有很好的解释:https://www.ida.liu.se/~TDP024/labs/hmacarticle.pdf)
我有两个文件看起来有点像这样:
Doc
{
_id: AAA,
creator_id: ...,
data: ...
}
DataKey
{
_id: ...,
credits_left: 500,
times_used: 0,
data_id: AAA
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建一个视图,允许我传递DataKey id(key = DataKey _id)并获取DataKey和Doc的信息.
我的尝试:
我首先尝试在Doc中嵌入DataKey并使用如下的map函数:
function (doc)
{
if (doc.type == "Doc")
{
var ids = [];
for (var i in doc.keys)
ids.push(doc.keys[i]._id);
emit(ids, doc);
}
}
Run Code Online (Sandbox Code Playgroud)
但我遇到了两个问题:
有谁有想法我怎么能做到这一点?如果有什么不清楚,请告诉我.
- - -编辑 - - -
我忘了提到在我的应用程序中我不知道Doc ID是什么,所以我需要能够搜索DataKey的ID.
我刚刚开始使用couchdb,到目前为止我真的很喜欢它,但我想知道你什么时候应该创建一个新的数据库.
这就是我的意思:
如果我要在具有多个博客的服务器上创建一个博客,这是一个RDBMS,我将创建一个名为fox_blog的数据库,并为帖子,评论等创建表和关系.
现在在CouchDB中,我只需要制作3种文档类型:帖子,评论和用户帐户.
但这是我的问题:我是否会创建一个名为fox_blog的数据库并为每个文档添加一个"类型"字段(例如,在帖子文档中会有一个'type'字段,其值为'post')?或者我会为每个文档创建一个单独的数据库,并在名称前面加上fox_(例如,db name将是fox_posts的帖子)?或者这些都不正确吗?
如果有任何不清楚的地方,请告诉我,有点难以解释
我读过一些文章说你应该把成本设置为至少16(2 16),而其他人说8左右是好的.
是否有成本应该设定的高官方标准?
我正在编写一个脚本,该脚本需要一个网页,并检测使用像facebook这样的按钮的次数.由于这最好用DOM完成,我决定使用PHP的DOMDocument.
不过,我遇到的一个问题是像facebook这样的按钮:
<fb:like send="true" width="450" show_faces="true"></fb:like>
Run Code Online (Sandbox Code Playgroud)
由于此元素在技术上具有"fb"的命名空间,因此DOMDocument会抛出一条警告,指出此命名空间前缀未定义.然后它继续去除前缀,所以当我到达所述元素时,它的标签不再是fb:like,而是像.
有没有办法"预注册"命名空间?有什么建议?
在创建程序,编译器,链接器等的过程中,是否覆盖了函数和运算符重载?
我特别感兴趣的是在C++,Ruby和Python中完成它.
我的服务器上有一个脚本解析字体,所以我可以在我的应用程序中使用它们.
遗憾的是,很多时候字体文件本身的名称是错误的(例如,文件可能被命名为_FONT1.ttf).然而,在Windows上,当我打开文件的属性时,我看到在字体详细信息选项卡(即其元数据)中,正确的名称存储在名为"标题"的字段中.
如何从我的文件中提取这段元数据?
如果您在数据库(例如 MySQL)中正确定义了检查和断言,那么在更新记录或将记录插入到像 MySQL 这样的数据库中之前验证数据是好的做法还是值得?
从我看来,只要您必须执行的检查并不复杂并且可以由数据库本身完成,那么先验证 PHP 中的数据,然后再验证 MySQL 中的数据看起来很浪费。
我的说法正确吗?