Google App Engine地图/ foo到/

时间:2016-08-16 17:34:10

标签: google-app-engine

我有这个网络应用程序,加载的第一个页面是登录页面:

app.appspot.com

成功登录后,

重定向到:

app.appspot.com \ FOO

我想知道是否有办法映射

app.appspot.com \ foo app.appspot.com

更新

这是我的app.yaml:

handlers:

- url: /js
  static_dir: static/js
- url: /css
  static_dir: static/css
- url: /fonts
  static_dir: static/fonts
- url: /img
  static_dir: static/img
- url: .*
  script: handler.app
  secure: always

1 个答案:

答案 0 :(得分:0)

这个答案假设你正在使用python环境。

你可以有一个login_required装饰器来检查用户是否已登录,如果没有则重定向到登录页面,然后在登录完成后再返回。可以在webapp2_extras.appengine.users中找到使用GAE users API作为身份验证方法的此类装饰器示例:

from google.appengine.api import users

def login_required(handler_method):
    """A decorator to require that a user be logged in to access a handler.

    To use it, decorate your get() method like this::

        @login_required
        def get(self):
            user = users.get_current_user(self)
            self.response.out.write('Hello, ' + user.nickname())

    We will redirect to a login page if the user is not logged in. We always
    redirect to the request URI, and Google Accounts only redirects back as
    a GET request, so this should not be used for POSTs.
    """
    def check_login(self, *args, **kwargs):
        if self.request.method != 'GET':
            self.abort(400,
                       detail='The login_required decorator '
                              'can only be used for GET requests.')

        user = users.get_current_user()
        if not user:
            return self.redirect(users.create_login_url(self.request.url))
        else:
            handler_method(self, *args, **kwargs)

    return check_login

您可以映射当前正在处理' / foo'通往' /'并将此类装饰器应用于其get()方法,获得您想要的结果(您的装饰者实际上会通过您的当前处理程序执行登录功能)。

您可以将此类装饰器应用于应用中的任何其他处理程序/路径。