Web2py:你能用密码保护页面吗?

时间:2015-05-05 16:06:27

标签: web2py

我正在寻找的具体功能:

成员创建一个显示信息的页面。会员可以将页面保持公开,或设置为" private"这样只有一个选择组才能查看它。当成员将页面设置为私有时,他们输入密码。然后,该成员与他们想要查看该页面的人共享此密码。当访问者访问该页面时,系统会提示他们输入密码。如果密码正确,则访问者可以查看该页面。

我是否需要强制访问者注册,然后检查列表以查看访问者是否已被批准访问该页面?在Web2py中有没有好的/更好的方式来考虑这个问题?

2 个答案:

答案 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')