2016-05-22 8 views
0

обновлениеapp.yaml «Логин: требуется» не работает

Является ли этот HTML код внутри шаблона read.html проблемы? Эта гиперссылка обойти app.yaml's login: required?

(<a href ="/edit/{{ blog_id }}/{{ r.key().id() }}">edit </a>) 

обновление

Мой app.yaml содержит несколько login: required директивы, но они, кажется, не остановить доступ в то время как я занимаюсь разработкой локально на GAE.

application: myapp 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /static 
    static_dir: static 
- url: /.* 
    script: main.app 

- url: /create.* 
    script: main.app 
    login: required 

- url: /createblog.* 
    script: main.app 
    login: required 

- url: /editblog.* 
    script: main.app 
    login: required 

My app's view.py начинается следующим образом. Обратите внимание, что в нижней части запускается шаблон edit.html. Но я хочу, чтобы только зарегистрированные пользователи получили доступ к этому шаблону. Меня даже не волнует, если пользователю, который не зарегистрирован, предоставляется возможность входа в систему.

import os 
import jinja2 
import webapp2 

from google.appengine.ext import db 
from google.appengine.api import users 

TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'templates') 
JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(TEMPLATE_DIR), 
    extensions=['jinja2.ext.autoescape'], 
    autoescape=True) 

class BaseHandler(webapp2.RequestHandler): 

    @webapp2.cached_property 
    def jinja2(self): 
     return jinja2.get_jinja2(app=self.app) 

    def render_template(
     self, 
     filename, 
     template_values, 
     **template_args 
     ): 
    template = JINJA_ENVIRONMENT.get_template(filename) 
     self.response.out.write(template.render(template_values)) 


class EditReminder(BaseHandler): 

    def get(self, blog_id, reminder_id): 
     iden = int(reminder_id) 
     reminder = db.get(db.Key.from_path('Blogs',blog_id,'Reminders', iden)) 
    self.render_template('edit.html', {'reminder': reminder, 'blog_id': blog_id}) 

The answer here is informative, but ...

а) Я понимаю, что ответ со ссылкой на «статические» файлы, которые я предполагаю не как мои шаблонов в том смысле, что шаблоны сыты входов дзиндзя и

b) Даже если мои шаблоны являются «статическими» файлами, я не понял, как реализовать рекомендацию ответа.

Итак, как можно заставить эти login: required сработать?

+0

Как вы решили, что он не работает? Если вы уже вошли в систему на локальном хосте, то файл cookie все равно будет там. Посетите/_ah/login и принудительно выйдите из системы, и посмотрите, что произойдет. – Greg

+0

Когда я посещаю '/ _ah/login', я вижу диалоговое окно, в котором говорится« не вошел в систему », и приглашает меня либо войти в систему, либо выйти из системы. Я не знаю, как проверить другие файлы cookie. Я использую localhost. – zerowords

ответ

4

Поместите всеохватывающий маршрут

- url: /.* 
    script: main.app 

на дне.

+0

Я только что вернулся, узнав об этом сам, когда увидел ваш ответ. – zerowords

Смежные вопросы