我有一个简单的应用程序来提供页面,我希望只有几个已经登录Google的预定用户才能访问此页面。实际上,我只想通过Google Spreadsheets中的importHTML函数进行访问。
如何以最小的麻烦实现这一点?这是应用程序:
import webapp2
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.out.write('/Statement.htm')
app = webapp2.WSGIApplication([('/Statement.htm', MainPage)],
debug=True)
这是app.yaml
application: *********
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
static_files: Statement.htm
upload: Statement.htm
我在教程中看到了这一点:
from google.appengine.api import users
class MainPage(webapp2.RequestHandler):
user = users.get_current_user()
但是这个“get_current_user”是谁?我不希望任何登录,我只是希望它是某种我可以检查的Google ID,如果/ else,则如果它与一个或两个允许的名称不匹配则提供错误页面。
答案 0 :(得分:1)
您应该从您的Google应用引擎信息中心授予他们管理员权限 - 在管理下 - >权限 - 并添加到您的app.yaml文件中:
修改强>
这是一种使用jinja2模板系统的方法。
app.yaml文件:
application: statement
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /statement
script: statement.app
login: admin
libraries:
- name: jinja2
version: latest
statement.py文件:
import webapp2
import jinja2
import os
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
class Statement(webapp2.RequestHandler):
def get(self):
template = jinja_environment.get_template('Statement.htm')
self.response.out.write(template.render())
app = webapp2.WSGIApplication([('/statement', Statement)],
debug=True)
Statement.htm文件:
You must have been granted admin permission.
当您转到http://127.0.0.1:8080/statement
时,您必须以管理员身份登录才能到达目的地。
这三个文件都在同一目录中。如果你的python主文件有其他名称,你应该在app.yaml文件中使用该名称和扩展名.app
:
script: your-python-file-name.app
答案 1 :(得分:0)
将“login:admin”放入app.yaml并将这些用户作为查看器添加到应用程序中。 请参阅https://developers.google.com/appengine/docs/python/config/appconfig#Requiring_Login_or_Administrator_Status。
答案 2 :(得分:0)
由于importHTML函数似乎没有提供任何类型的授权,我只是将url处理程序更改为一个非常长的随机数字串(实际上是密码编码为SHA1)。
对于上面基于jinja的解决方案,我在app.yaml中添加了一个像这样的处理程序
- url: /a...................6/.*
script: spreadsheet.app
其中spreadsheet.app指向spreadsheet.py,它与statement.py相同,但webapp2调用中的其他url字符串和新的类名称除外。
现在,通过浏览器访问的人需要被授权为管理员,而长链接仅存在于谷歌电子表格文档的单元格内,因此不会留在浏览器历史记录中或任何地方。
我希望它也不会被Google编入索引,也不会出现在搜索结果中。
也许不是完美的解决方案,但可行的解决方法。