我在身份验证后将用户权限标识符放在用户会话中。 如何根据用户权限限制对站点某些部分的访问。现在我正在检查页面处理程序中的权限,但是如何使其更好?
是否有任何现有的模板?你能举个例子吗?
答案 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的示例