Jer*_*y T 0 python authentication login pyramid
我刚刚在我的应用程序中进行身份验证,并且我能找到的所有金字塔示例都很好地解释了这些简单的部分,但是对我没有任何意义的部分进行了手动操作.
大多数示例看起来像这样:
login = request.params['login']
password = request.params['password']
if USERS.get(login) == password:
headers = remember(request, login)
return HTTPFound(location = came_from,
headers = headers)
Run Code Online (Sandbox Code Playgroud)
从init:
session_factory = UnencryptedCookieSessionFactoryConfig(
settings['session.secret']
)
authn_policy = SessionAuthenticationPolicy()
authz_policy = ACLAuthorizationPolicy()
Run Code Online (Sandbox Code Playgroud)
试图追踪登录实际发生的点,我假设它是这个:
headers = remember(request, login)
Run Code Online (Sandbox Code Playgroud)
在我看来,正在发生的是我们将用户名存储在会话cookie中.
如果我把这一行放在我的应用程序中,当前用户会神奇地登录,但为什么呢?
金字塔的安全系统围绕着校长 ; 你的login价值就是本金.您的代码需要提供remember()有效的主体名称; 如果你在表单中填写的登录名被用作你的校长,那就太好了.如果您使用的是电子邮件地址,但使用数据库主键作为主要字符串,那么您必须自己映射.
究竟remember() 确实取决于你的认证策略 ; 政策是根据请求"知道"来请求您要求它记住的校长.
如果您使用该AuthTktAuthenticationPolicy策略,则主体值存储在加密签名的cookie中; 您的下一个响应将Set-Cookie添加标头.然后下一次请求进入该cookie时,如果它仍然有效且签名签出,则策略现在"知道"该请求的原理是什么.
当该请求然后尝试访问受保护资源时,Pyramid会看到策略生效,并询问该策略是否符合当前的身份验证原则.
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |