【问题标题】:web2py How lo log out a userweb2py 如何注销用户
【发布时间】:2012-06-13 16:01:44
【问题描述】:

我刚刚开始研究 web2py,该方法中的很多东西都是 nwe,例如使用视图的默认值等。 我花了很多时间试图弄清楚如何让人们登录并最终放置

@auth.requires_login()

在控制器方法的开头。这神奇地弹出了一个注册表单,之后新用户就登录了。 我不确定我是否完全了解幕后发生的事情,但一步一步来。

但是,我想提供一个注销按钮,但不知道如何实现。显然我需要以某种方式调用默认注销。所以我需要在提交表单/按钮中添加一个 url 并大概创建一个控制器来匹配 url,但是注销的方法会是什么样子?

在用户方法中是暴露语句,但不知道它们的含义或如何使用它们。所有这些点都让我感到困惑。

【问题讨论】:

    标签: python login web2py logout


    【解决方案1】:

    我花了很多时间试图弄清楚如何让人们登录

    你读过this section 的书吗?它解释了@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]中读取action,然后调用相应的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 导航栏——当用户登录时,该导航栏会自动包含一个“注销”链接,例如上面那个。

    【讨论】:

    • 我确实阅读了在线书籍中的部分。我还在线购买了“Web2py Cookbook”这本书,但我看不到它在哪里说要获得登录屏幕,您将装饰器放在受控制的方法之前。
    • 如果您查看 layout.html 中的源代码,那里没有显示 /user/login 的内容。但是,如果您查看网页上的源代码,您可以在那里看到它。感谢您的帮助,我仍然认为对于新用户来说,可以有一个示例来说明如何将登录屏幕添加到简单的应用程序中。
    • Auth decorators部分它说,“如果访问者未登录,则无法检查权限;访问者被重定向到登录页面,然后返回需要访问的页面权限”。因此,装饰器不仅限制访问,而且如果用户未登录,它们会重定向到登录页面。也许这可以更清楚。
    • 关于 layout.html,正如我在上面的答案中提到的,layout.html 包括auth.navbar()——它是对auth.navbar() 的调用,它生成了 Auth 链接(登录、注册、注销、等等。)。它只是一个方便的助手——你不必使用它——你可以生成自己的链接。
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2020-09-03
    • 2013-12-04
    • 2013-07-30
    • 2023-03-13
    相关资源
    最近更新 更多