如何在web2py中注销用户

3
我刚开始接触web2py,其中很多方法都很新颖,例如视图中默认值的使用等等。 我花费了很多时间试图弄清如何让用户登录,最终放弃了。

@auth.requires_login()

在控制器方法的开头,这不可思议地呈现了一个注册表单,之后新用户被登录。我不确定背后发生了什么,但是一步一步来。然而,我想提供一个注销按钮,却不知道如何实现。显然,我需要以某种方式调用默认注销。因此,我需要向提交表单/按钮添加URL,然后创建一个匹配URL的控制器,但是注销方法将是什么样子呢?在用户方法中有暴露语句,但是我不知道它们的含义或如何使用它们。所有那些点号让我困惑。
1个回答

4
我花了很多时间试图找出如何让人们登录。
你是否阅读了书中的这个章节?它解释了@auth.requires_login()的使用方式,以及默认的user()函数如何暴露登录功能(如果需要,还可以创建一个专门用于登录的单独操作)。在脚手架应用程序中,默认的.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 导航栏插入页面右上角 - 当用户登录时,该导航栏会自动包含类似于上面的 "Logout" 链接。

我确实阅读了在线书籍中的章节。我还在线购买了《Web2py Cookbook》这本书,但我没有看到它在哪里说要在控制器方法之前放置装饰器以获取登录屏幕。 - jimscafe
如果您查看layout.html中的源代码,那里没有显示/user/login的内容。但是,如果您查看网页的源代码,您可以在那里看到它。非常感谢您的帮助,我仍然认为对于新用户来说,可以提供如何向简单应用程序添加登录界面的示例。 - jimscafe
Auth decorators一节中,它说:“如果访问者没有登录,则无法检查权限;访问者将被重定向到登录页面,然后返回需要权限的页面”。因此,装饰器不仅限制了访问,而且如果用户未登录,它们会重定向到登录页面。也许这可以更清楚地表达。 - Anthony
关于layout.html,正如我在上面的答案中提到的那样,layout.html包括auth.navbar() -- 这是对auth.navbar()的调用,它生成了Auth链接(登录、注册、注销等)。这只是一个方便的帮助程序 -- 您不必使用它 -- 您可以自己生成链接。 - Anthony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接