python pylons turbogears2

python - El cierre de sesión falla en Turbogears 2.2.2



pylons turbogears2 (1)

  1. Eliminar todas las cookies de su dominio. Cuando cambia su dominio, las cookies antiguas aún permanecen y podrían causar este problema.
  2. ¿Por qué usas tanto beta.domain.com como .beta.domain.com ? Si no necesita usar esta cookie en los subdominios, elimine el segundo, simplemente use .beta.domain.com .

Si esto no ayuda, por favor adjunte el encabezado de solicitud y respuesta.

Tengo una aplicación escrita en TG 2.2.2 con autenticación predeterminada. Últimos días, tengo problemas con el inicio y el cierre de sesión. En safari, se crean dos cookies de autenticación, una como "beta.domain.com", otra ".beta.domain.com". Después de llamar / logout_handler, la cookie para el dominio "beta.domain.com" solo se elimina, pero el dominio salvaje permanece. Por lo tanto, después de volver a cargar la página, el usuario todavía está conectado. El problema está ocurriendo en localhost y en producción.

Interesante es que otras aplicaciones en la misma versión lib funcionan normalmente, así como en otros navegadores, no se usa virtualenv.

Realmente no sé dónde está el problema, por lo que incluiré cualquier archivo de configuración cuando se solicite. Al principio, se incluye app_config.

app_cfg.py

# -*- coding: utf-8 -*- from tg.configuration import AppConfig import cafeteria from cafeteria import model from cafeteria.lib import app_globals, helpers base_config = AppConfig() base_config.renderers = [] base_config.prefer_toscawidgets2 = True base_config.package = cafeteria base_config.renderers.append(''json'') base_config.renderers.append(''mako'') base_config.default_renderer = ''mako'' base_config.use_sqlalchemy = True base_config.model = cafeteria.model base_config.DBSession = cafeteria.model.DBSession # Configure the authentication backend # YOU MUST CHANGE THIS VALUE IN PRODUCTION TO SECURE YOUR APP base_config.sa_auth.cookie_secret = "SOMESECRET" base_config.auth_backend = ''sqlalchemy'' from tg.configuration.auth import TGAuthMetadata # This tells to TurboGears how to retrieve the data for your user class ApplicationAuthMetadata(TGAuthMetadata): def __init__(self, sa_auth): self.sa_auth = sa_auth def get_user(self, identity, userid): return self.sa_auth.dbsession.query(self.sa_auth.user_class).filter_by(user_name = userid).first() def get_groups(self, identity, userid): return (identity[''user''].group.name,) if identity[''user''].group_id else [] def get_permissions(self, identity, userid): return [p.name for p in identity[''user''].group.permissions] if identity[''user''].group_id else [] base_config.sa_auth.dbsession = model.DBSession base_config.sa_auth.user_class = model.User # base_config.sa_auth.group_class = model.Group # base_config.sa_auth.permission_class = model.Permission base_config.sa_auth.translations.group_name = ''name'' base_config.sa_auth.translations.permission_name = ''name'' base_config.sa_auth.authmetadata = ApplicationAuthMetadata(base_config.sa_auth) # base_config.sa_auth.authenticators = [(''myauth'', SomeAuthenticator()] # base_config.sa_auth.mdproviders = [(''myprovider'', SomeMDProvider()] base_config.sa_auth.form_plugin = None base_config.sa_auth.charset = ''utf-8'' base_config.sa_auth.post_login_url = ''/post_login'' base_config.sa_auth.post_logout_url = ''/post_logout''