我花了很多时间试图弄清楚如何让人们登录
你读过这本书的这一部分吗?它解释了@auth.requires_login()
默认user()
函数的使用和如何工作以公开登录功能(以及如何在需要时专门为登录创建单独的操作)。在脚手架应用程序中,default.py 控制器包含以下user()
函数以公开所有 Auth 操作:
def user():
return dict(form=auth())
在像“/myapp/default/user/[action]”这样的 URL 中,请求的 Auth 操作(即 URL 的最后一个元素)将在 request.args[0] 中可用。当上述函数调用auth()
时,Auth__call__()
方法会从 request.args[0] 中读取动作,然后调用相应的 Auth 方法。如果 URL 是“/myapp/default/user/login”,auth()
最终将调用该auth.login()
方法,该方法将返回(并处理)登录表单。auth.login()
如果您想创建自己的自定义登录操作,也可以直接调用。
同样,URL“/myapp/default/user/logout”最终会调用该auth.logout()
方法,该方法将注销用户。所以,如果你想启用注销,只需生成一个指向注销 URL 的链接——最好的方法是使用该URL()
功能:
A('Logout', _href=URL('default', 'user', args='logout'))
请注意,在脚手架应用程序中,layout.html 视图用于auth.navbar()
在页面的右上角插入 Auth 导航栏——当用户登录时,该导航栏会自动包含一个与上述类似的“注销”链接。