限制访问网站的某些部分.Google App Engine网络应用

Ale*_*tov 2 security google-app-engine

我在身份验证后将用户权限标识符放在用户会话中.如何根据用户权限限制对站点某些部分的访问.现在我正在检查页面处理程序中的权限,但如何使其更好?

这样做有现成的模板吗?你举个例子吗?

Nic*_*son 5

您可以定义装饰器以使其更容易.例如:

def requiresUser(fun):
  def decorate(*args, **kwargs):
    if not users.get_current_user():
      self.error(403)
    else:
      fun(*args, **kwargs)
  return decorate

def requiresAdmin(fun):
  def decorate(*args, **kwargs):
    if not users.is_current_user_admin():
      self.error(403)
    else:
      fun(*args, **kwargs)
  return decorate
Run Code Online (Sandbox Code Playgroud)

要使用它们,只需修饰处理程序方法:

class NewsHandler(webapp.RequestHandler):
  # Only logged in users can read the news
  @requiresUser
  def get(self):
    # Do something

  # Only admins can post news
  @requiresAdmin
  def post(self):
    # Do something
Run Code Online (Sandbox Code Playgroud)