我最近將一個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)
這不是一個questi作爲一個錯誤報告。請將這些留給Plone問題跟蹤器。 SO只適用於Q&A。 – 2013-03-04 08:06:05
已注意。我不確定這是否是一個錯誤,我認爲SO將是公開文檔的好地方。如果我再次遇到錯誤,我會參考問題跟蹤器。 – waldopat 2013-03-04 17:44:34