gpt4 book ai didi

python - Web2Py 最小用户身份验证(仅限用户名)

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:48 25 4
gpt4 key购买 nike

我在网上没有找到任何东西,所以我在这里问。

有没有一种方法可以创建只需要用户名的自定义身份验证?这意味着登录到特定子页面只需输入用户名,无需电子邮件和密码等?

或者有更好的方法吗?例如。仅当用户名(或类似用户名)存在于数据库表中时才能访问子页面?

最佳答案

是的,你可以这样做:

(在模型文件中,或者在 Controller 的顶部,或者更好地制作一个函数装饰器)

检查 session.logged_in_user 看它是否为 None,如果为 None,则重定向到/default/login,在那里您向用户显示一个表单:

form = FORM(Field('username'), requires=IS_IN_DB(db, db.users.username))

在提交表单时(请参阅表单处理的 web2py 手册),如果有效(例如,如果用户名存在于 db.users 表中),则设置 session.logged_in_user = request.vars.username

这是一个完整的例子(未经测试):

models/Auth.py

# Could also check whether session.logged_in_user exists in DB, but probably not needed
# If so though, should be renamed zAuth or something to come after db.py file
if not session or not session.logged_in_user:
redirect(URL('default','login', vars={'next':request.vars.url}))

controllers/default.py

#in file: controllers/default.py
...
def login():
form = FORM(Field('username', requires=IS_IN_DB(db, db.users.username))

if form.process().accepted:
session.logged_in_user = form.vars.username
redirect(request.vars.next)
elif form.errors:
session.logged_in_user = None # not necessary, but oh well
response.flash = "Please enter a valid username"

return dict(form=form)

views/default/login.html

{{ extend 'layout.html' }}
{{ =form }}

通过将代码放在模型文件中,您可以确保它在每次页面请求时执行。

这将不允许您使用 web2py 的身份验证机制(即 auth = AUTH()),但我不确定您是否需要它,除非您对使用组和权限等。但如果是这样的话,添加密码(即使是通用密码或空白密码)似乎也不会太麻烦。

关于python - Web2Py 最小用户身份验证(仅限用户名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14028015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com