我正在尝试使用 Pyramid 文档的“使“用户对象”可用作请求属性“示例来制作用户数据的可访问缓存。
他们使用此代码将用户对象返回给 set_request_property:
from pyramid.security import unauthenticated_userid
def get_user(request):
# the below line is just an example, use your own method of
# accessing a database connection here (this could even be another
# request property such as request.db, implemented using this same
# pattern).
dbconn = request.registry.settings['dbconn']
userid = unauthenticated_userid(request)
if userid is not None:
# this should return None if the user doesn't exist
# in the database
return dbconn['users'].query({'id':userid})
我不明白他们为什么使用 unauthenticated_userid(request) 从数据库中查找用户信息……这不是不安全吗?这意味着用户可能没有登录,那么为什么要使用该 ID 从数据库中获取私人信息?
不应该
userid = authenticated_userid(request)
而是用来确保用户已登录?使用 unauthenticated_userid(request) 有什么好处?请帮助我了解这里发生了什么。