2013-03-04 2 views
0

J'ai récemment migré un site Plone de Plone 4.1.4 vers Plone 4.2.4. La migration elle-même n'a signalé aucune erreur. Cependant, au cours des derniers jours, nous avons reçu des rapports de comportement très étrange. Certains utilisateurs n'ont pas pu se connecter et ont reçu un UnicodeDecodeError dans plone.session.tktauth et la fonction createTicket (voir ci-dessous) et ont été renvoyés au formulaire de connexion. Aucun de ces utilisateurs n'avait des caractères utf-8 dans leur nom d'utilisateur ou mot de passe, ce qui était le plus étrange à propos de tout cela. À la suite d'une enquête, j'ai vu que plone.session était la version 3.5.2 et que deux lignes avaient le codage défini sur None (aucun). Dans ma version précédente 3.5, l'encodage dans createTicket et splitTicket était défini sur utf-8. En changeant ces lignes utf-8 je résoudre l'erreur (jusqu'à présent!):formulaire de connexion, createTicket et UnicodeDecodeError bug et solution potentielle

def createTicket(secret, userid, tokens=(), user_data='', ip='0.0.0.0', timestamp=None, encoding='utf8', mod_auth_tkt=False): 
... 

def splitTicket(ticket, encoding='utf8'): 
... 

Je ne sais pas si quelqu'un d'autre l'expérience de ce ou si cela est un bug, mais je pensais que je le mettrais là-bas. J'espère que cela aide quelqu'un qui souffre du même problème.

Best, Patrick

Erreur d'origine:

Module ZPublisher.Publish, line 126, in publish 
Module ZPublisher.mapply, line 77, in mapply 
Module ZPublisher.Publish, line 46, in call_object 
Module Products.CMFFormController.FSControllerPageTemplate, line 91, in __call__ 
Module Products.CMFFormController.BaseControllerPageTemplate, line 28, in _call 
Module Products.CMFFormController.ControllerBase, line 231, in getNext 
Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__ 
Module ZPublisher.mapply, line 77, in mapply 
Module ZPublisher.Publish, line 46, in call_object 
Module Products.CMFFormController.FSControllerPythonScript, line 105, in __call__ 
Module Products.CMFFormController.Script, line 145, in __call__ 
Module Products.CMFCore.FSPythonScript, line 127, in __call__ 
Module Shared.DC.Scripts.Bindings, line 322, in __call__ 
Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec 
Module Products.PythonScripts.PythonScript, line 344, in _exec 
Module script, line 29, in logged_in 
<FSControllerPythonScript at /Plone/logged_in> 
Line 29 
Module Products.PlonePAS.tools.membership, line 624, in loginUser 
Module Products.PlonePAS.plugins.cookie_handler, line 93, in login 
Module Products.PluggableAuthService.PluggableAuthService, line 1140, in updateCredentials 
Module plone.session.plugins.session, line 220, in updateCredentials 
Module plone.session.plugins.session, line 140, in _setupSession 
Module plone.session.tktauth, line 177, in createTicket 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa8 in position 6: ordinal not in range(128) 
+1

Ce n'est pas tellement une questi sur comme un rapport de bug. S'il vous plaît, gardez-les dans le dossier de suivi de Plone. SO est vraiment pour Q & A seulement. –

+0

Noté. Je n'étais pas sûr si c'était un bug ou non et je pensais que SO serait un bon endroit pour la documentation publique. Je vais me référer à l'Issue Tracker si je rencontre à nouveau un bug. – waldopat

Répondre

0

Solution proposée, où encoding = Aucun dans plone.session.tktauth, mis à UTF8:

def createTicket(secret, userid, tokens=(), user_data='', ip='0.0.0.0', timestamp=None, encoding='utf8', mod_auth_tkt=False): 
... 

def splitTicket(ticket, encoding='utf8'): 
Questions connexes