python – 自定义web2py注册
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 自定义web2py注册,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1874字,纯文字阅读大概需要3分钟。
内容图文
我是web2py的新手.我想创建一个有一个管理员的应用程序(超级用户)
帐户.我想限制’只有管理员可以注册用户’.以便
一旦管理员登录到应用程序,他将看到不同的菜单,如’Home’,
‘设置’和’注册用户’.我完成了其他选择,但我
在“注册用户”中遇到问题.
在我的应用程序中有一个“注册”链接 – http://127.0.0.1:8000/filemanager2/default/user/register.但是当我点击它时,我得到了
重定向到配置文件页面.这是因为管理员用户已经登录了
in并因此在点击注册链接后显示管理员
帐户的个人资料.我该怎么做才能解决这个问题?
解决方法:
如果你想利用内置的Auth register()函数,可以按如下方式破解它:
@auth.requires_membership('admin')
def register()
admin_auth = session.auth
auth.is_logged_in = lambda: False
def post_register(form):
session.auth = admin_auth
auth.user = session.auth.user
auth.settings.register_onaccept = post_register
return dict(form=auth.register())
通常,Auth.register()检查用户是否已登录,如果是,则重定向到配置文件页面.上面用一个简单返回False的lambda替换auth.is_logged_in()方法,因此不会发生重定向. Auth.register()还将session.auth和auth.user设置为与新注册用户关联的值,因此上面的代码保存了admin的值,并使用register_onaccept回调将session.auth和auth.user恢复为admin的值.
另一种方法是简单地基于db.auth_user表创建自己的注册表单,并使用Auth.get_or_create_user()方法添加新用户:
@auth.requires_membership('admin')
def register():
form = SQLFORM(db.auth_user)
if form.validate():
admin_user = auth.user
auth.get_or_create_user(form.vars)
auth.user = admin_user
return dict(form=form)
但是,在这种情况下,您将无法获得内置register()函数自动添加到寄存器表单的密码验证字段.与内置的register()方法一样,get_or_create_user()也将auth.user设置为新用户的记录,因此您必须在插入后将其重新设置回admin用户的记录.
注意,如果auth.settings.create_user_groups为True(默认值),则上述两种方法都将自动为新用户创建新的唯一Auth组,并将用户分配给该组.您可以简单地使用标准SQLFORM添加新用户,而不是上述方法,但您必须手动创建和添加组.
我们应该添加一个选项,以使这更容易.
内容总结
以上是互联网集市为您收集整理的python – 自定义web2py注册全部内容,希望文章能够帮你解决python – 自定义web2py注册所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。