0

ページを提供するシンプルなアプリがあります。このページには、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」は誰ですか? ログインは必要ありません。許可された名前の 1 つまたは 2 つと一致しない場合は、if/else で確認してエラー ページを表示できる、ある種の Google ID にしたいだけです。

4

3 に答える 3

1

Google App Engine ダッシュボード ([管理] -> [権限] の下) から管理者権限を付与し、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、管理者としてログインしてそこにアクセスする必要があります。3 つのファイルはすべて同じディレクトリにあります。.appPython のメイン ファイルに別の名前が付いている場合は、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

ここで、spreadsheet.app は、webapp2 呼び出しの異なる URL 文字列と新しいクラス名を除いて、statement.py と同じ Spreadsheet.py を指します。

長いリンクは Google スプレッドシート ドキュメントのセル内にのみ存在するため、ブラウザの履歴やどこにも残されませんが、ブラウザからアクセスする人は管理者として承認される必要があります。

また、Google にインデックスされず、検索結果に表示されないことを願っています。

完璧な解決策ではないかもしれませんが、まずまずの回避策です。

于 2013-01-16T11:02:33.477 に答える
0

「login: admin」を app.yaml に入力し、これらのユーザーをビューアーとしてアプリケーションに追加します。https://developers.google.com/appengine/docs/python/config/appconfig#Requiring_Login_or_Administrator_Statusを参照してください。

于 2013-01-09T08:52:10.940 に答える