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')
我正在寻找的特定功能:
一位会员创建了一个页面来显示信息。成员可以保留页面 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')