2013-03-04 36 views
0

我最近將一個Plone站點從Plone 4.1.4遷移到了Plone 4.2.4。遷移本身報告沒有錯誤。然而,在過去的幾天裏,我們收到了很奇怪的舉動。某些用戶無法登錄並收到plone.session.tktauth和createTicket函數中的UnicodeDecodeError(見下文),並將其發送回登錄表單。這些用戶中沒有一個在其用戶名或密碼中包含utf-8字符,這是所有這些內容中最奇怪的部分。登錄表單,createTicket和UnicodeDecodeError錯誤和潛在的解決方案

經過一番調查,我看到plone.session是版本3.5.2,兩行代碼的編碼設置爲None。在我以前的3.5版本中,createTicket和splitTicket中的編碼設置爲utf-8。通過這些線路更改爲UTF-8我解決了錯誤(至少到目前爲止):

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'): 
... 

不知道是否有人經歷過這個,或者如果這是一個錯誤,但我想我會把它在那裏。希望這可以幫助任何遭受同樣問題的人。

最佳, 帕特里克

原始錯誤:

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

這不是一個questi作爲一個錯誤報告。請將這些留給Plone問題跟蹤器。 SO只適用於Q&A。 – 2013-03-04 08:06:05

+0

已注意。我不確定這是否是一個錯誤,我認爲SO將是公開文檔的好地方。如果我再次遇到錯誤,我會參考問題跟蹤器。 – waldopat 2013-03-04 17:44:34

回答

0

建議的解決方案,其中編碼=無在plone.session.tktauth,設置爲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'): 
相關問題