0

我有一个提供页面的简单应用程序,我希望这个页面只能由已经登录 Google 的几个预定用户访问。事实上,我只想通过 Google 电子表格中的 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,我可以使用 if/else 检查它并在它与一两个允许的名称不匹配时提供错误页面。

4

3 回答 3

1

您应该从您的谷歌应用引擎仪表板授予他们管理员权限 - 在管理 -> 权限下 - 并添加到您的 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在 app.yaml 文件中使用该名称和扩展名:

script: your-python-file-name.app

于 2013-01-09T08:53:20.680 回答
0

由于 importHTML 函数似乎没有提供任何类型的授权,我只是将 url 处理程序更改为一个非常长的随机数字符串(实际上密码短语编码为 SHA1)。

对于上面基于 jinja 的解决方案,我在 app.yaml 中添加了一个处理程序,如下所示

- url: /a...................6/.*
  script: spreadsheet.app

电子表格.app 指向一个与 statement.py 相同的电子表格.py,除了 webapp2 调用中的不同 url 字符串和一个新的类名。

现在通过浏览器访问的人需要被授权为管理员,而长链接仅存在于谷歌电子表格文档的单元格内,因此不会留在浏览器历史记录或任何地方。

我希望它也不会被谷歌索引,也不会出现在搜索结果中。

也许不是完美的解决方案,而是一个可行的解决方法。

于 2013-01-16T11:02:33.477 回答
0

将“登录:管理员”放入您的 app.yaml 并将这些用户作为查看器添加到应用程序。请参阅https://developers.google.com/appengine/docs/python/config/appconfig#Requiring_Login_or_Administrator_Status

于 2013-01-09T08:52:10.940 回答