我正在寻找的具体功能:
成员创建一个显示信息的页面。会员可以将页面保持公开,或设置为" private"这样只有一个选择组才能查看它。当成员将页面设置为私有时,他们输入密码。然后,该成员与他们想要查看该页面的人共享此密码。当访问者访问该页面时,系统会提示他们输入密码。如果密码正确,则访问者可以查看该页面。
我是否需要强制访问者注册,然后检查列表以查看访问者是否已被批准访问该页面?在Web2py中有没有好的/更好的方式来考虑这个问题?
答案 0 :(得分:1)
Web2py内置了一些强大的访问控制功能。请参阅此link.基本上,您可以创建组并向这些组添加/删除用户(成员)。如果用户是组的成员,您可以允许或禁止访问某些内容。
例如,让我们创建一个组并在模型或控制器中添加一些成员资格:
#get the id of the user logged in
user_id = auth.user_id
#make a new group just for viewing this page
new_group_id = auth.add_group(
"private_page_by_user_%s" % user_id,
"This is a private page made by user id # %s" % user_id
)
#make the creator a member
auth.add_membership(new_group_id, user_id)
#for simplicity
friend_id = 5
#add friends to the group, so they can view the private page
auth.add_membership(new_group_id, friend_id)
现在在"页面"控制器,您可以根据其成员资格允许或阻止用户:
def page():
#... stuff
#... more stuff
if page_is_private and not auth.has_membership(group_id=group_id): #or you can do auth.has_membership(role="private_page_by_user_1")
redirect(URL("access_denied"))
#... continue
答案 1 :(得分:0)
您可以在其他页面上显示链接,也可以通过电子邮件向用户发送指向test
页面的链接。对于test
页面,您可以在控制器中进行此操作:
@auth.requires_login()
def test():
redirect(URL('sign_page',user_signature=True))
return dict(link=link)
在test
页面上,用户可以注册并登录。然后,test
页面会将用户重定向到您希望此用户访问的页面,因此此页面需要用户signature
:
@auth.requires_signature()
def sign_page():
return dict(message='Welcome to this page')