我正在寻找在我的 Firestore 数据库中添加规则。规则是如果文档等于request.auth.uid. 我不知道如何在规则中搜索我的文档名称。
这是我缺少这部分的代码:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{anyDocument} {
allow write: if request.auth != null && request.auth.uid == ?????????;
allow read
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个网站,要求用户使用用户名和密码进行身份验证.我想使用SSL,但我没有SSL证书.但是,我认为其他一些事情我觉得还可以.
我的网站主要是基于AJAX的,需要 JavaScript,否则什么都行不通.
当用户尝试登录时,我使用AJAX查询数据库以查找该用户名的盐,如果没有找到,则返回随机盐(以防止人们知道是否存在具有该用户名的用户) .然后,使用JavaScript的MD5函数,我将密码哈希并加密密码4K次(就像Linux使用MD5进行密码哈希)客户端,然后我以明文形式将该哈希传递给服务器.然后,将对此哈希进行多次哈希处理,并使用数据库中的内容进行检查.
这样安全吗?如果没有,我怎样才能保证它的安全而不需要为大多数内部网站提供SSL证书?
程序员经常抱怨说,只要他们拥有更快/更多内存/更多核心机器,他们就会更快乐(他们从不会说更高效).
任何人都可以想到除了程序员工作站之外还有两个空闲的四核四核服务器可用的语言/协议系统.
我不能,因为大多数编译器/解释器通常按照说法进行单线程处理,并遵循编译/检查语法阶段,然后是链接/绑定序列.即使在现代IDE中,也不存在编译许多源文件的编译阶段的能力.
让我们说在Python中我有一个列表如下:
a = ['spam', 'eggs', 100, 1234]
现在我有了价值devon,我想将其添加到'垃圾邮件'中,使其成为一个列表,结果如下:
a = [['spam', 'devon'], 'eggs', 100, 1234]
编辑德鲁提出了一个很好的问题,所以我将扩展这个:
之后devon,我们也会收到baloney并希望得到结果
a = [['spam', 'devon', 'baloney'], 'eggs', 100, 1234]
最简单的方法是什么?是否有一种通用的方法来附加未知元素是否为字符串或列表的项目?
如果您将一个或另一个留空,或者未在您的实体中指定,则无论如何都会为该实体创建一个密钥/ ID,如管理控制台数据存储区查看器中所示.
奖金问题:为什么在放入()之后你不能获得Entity对象的ID?entity.getProperty("id")返回null.密钥对象无法序列化,因此GWT无法使用.
参考:
https://developers.google.com/appengine/docs/java/datastore/entities
https://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys
我在文档中找不到这个.我在单个AppEngine请求中检查数据存储区中多个键的存在.是否可以在单个查询中执行此操作,因为这比发送多个get_by_id请求更有效?
python google-app-engine python-2.7 app-engine-ndb google-cloud-datastore
ndb.StringProperty(repeated=True)我试图通过将其设置为来清除一个值None,但收到错误:
BadValueError:预期的列表或元组,没有得到
这非常简单,但我使用的代码是:
g.kids_names = None
g.put()
Run Code Online (Sandbox Code Playgroud) python google-app-engine app-engine-ndb google-cloud-datastore
在我正在开发的GAE应用程序中,我有一个Room实体,它有KeyProperty一个Match对象.房间应该总是匹配,没有房间就不能存在匹配.
现在,我假设我必须创建一个这样的匹配对象:
Match(parent=room.key)
Run Code Online (Sandbox Code Playgroud)
但是,房间总是要求创建匹配,我想到这样做的唯一方法如下:
room = Room()
match = Match(parent=room.put())
room.match_key = match.put()
room.put() # again!
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这个问题?
python google-app-engine app-engine-ndb google-cloud-datastore
我正在为Google App Engine应用程序(Python)编写一些单元测试.我正在使用模拟库来模拟NDB tasklet.
但是,因为tasklet返回Future对象,我想知道如何实例化并使用我自己的自定义NDB Future对象,我可以将其作为mock的行为的一部分返回.如果没有这种能力,我完全不知道如何模拟ndb tasklet以验证在tasklet中调用了正确的方法.
在这个例子中.async_datastore_update()用@ ndb.toplevel修饰.在这个函数里面,有一个我要模拟的NDB tasklet:yield self._async_get_specialist(specialist_name)
a_mgr = data_manager.AchievementsHandler()
# Initiate data store sync and flush async to force result
future = a_mgr.async_datastore_update()
future.get_result() # Flushes out the self.async_get_specialist() tasklet's results
# Continue testing...
Run Code Online (Sandbox Code Playgroud)
没有嘲弄self.async_get_specialist(),这可以通过刷新顶级函数中的异步进程来实现.
但是,当我模拟出来self.async_get_specialist()验证行为时,我在调用future的get_result()方法时遇到异常:
# Here, we mock out a future object, as per GAE docs
promise_obj_stub = ndb.Future()
a_mgr = data_manager.AchievementsHandler()
a_mgr._async_get_specialist = mock.Mock(return_value=promise_obj_stub)
# Initiate data store sync and flush …Run Code Online (Sandbox Code Playgroud) google-app-engine python-2.7 app-engine-ndb google-cloud-datastore
使用Google提供的示例,他们经常使用以下代码编码html响应:
self.response.write( "<html><p>Some stuff!</p></html>" )
Run Code Online (Sandbox Code Playgroud)
这是硬编码html的一种可怕方式,如果我想发回一个漂亮的页面或预制,设计精美的响应页面,似乎应该有一种方法将用户直接重定向到实际的nice_response.html.
我似乎无法找到任何关于如何做到这一点的示例或文档.我接近它是错误的还是有一种简单的方法将请求指向真正的 HTML页面而不用硬编码响应html?
谢谢
python ×5
python-2.7 ×2
compilation ×1
database ×1
firebase ×1
html ×1
md5 ×1
python-3.x ×1
security ×1
server ×1
ssl ×1