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

Web2py: Can you password protect a page?

我正在寻找的特定功能:

一位会员创建了一个页面来显示信息。成员可以保留页面 public,或设置为 "private",以便只有 select 组可以查看它。当成员将页面设置为私有时,他们会输入密码。然后该成员与他们想要查看该页面的人共享此密码。当访问者到达该页面时,系统会提示他们输入密码。如果密码正确,则访问者可以查看该页面。

我是否需要强制访问者注册,然后对照列表检查访问者是否已获准访问该页面?在 Web2py 中有更好的方法来考虑这个问题吗?

Web2py 内置了一些强大的访问控制功能。看这个link.基本上你可以创建组和add/remove用户(成员)到这些组.如果用户是某个组的成员,您可以允许或禁止访问某些内容。

For example, lets create a group and add some memberships in a model or controller:

#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)

Now in the "page" controller you can allow or block users based on their membership:

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

您可以在其他页面上设置 link 或通过电子邮件将 link 发送至 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')