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

时间:2009-07-31 08:07:00

标签: security google-app-engine

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

是否有任何现有的模板?你能举个例子吗?

2 个答案:

答案 0 :(得分: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

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

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

答案 1 :(得分:1)

如果您想将某些区域仅限于您应用的管理员,可以将以下内容放入app.yaml

- url: /url.*
  script: path.py
  login: admin

否则你可以检查某人

class PathHandler(webapp.RequestHandler): 
  def get(self):
    if users.get_current_user():
       pass #do something
    else:
       self.error(403) #Access denied

 def post(self):
    if users.get_current_user():
       pass #do something
    else:
       self.error(403) #Access denied

编辑:http://code.google.com/p/gdata-python-client/source/browse/#svn/trunk/samples/oauth/oauth_on_appengine包含在appengine上使用OAuth的示例