node-postgres UTF password bug

梦想与她 提交于 2020-01-04 07:29:06

问题


I'm using https://github.com/brianc/node-postgres pg module. Apparently I can't consume a Unicode password to connect to the db. From the same location psql with connection parameters goes OK. With Node.js, it gives ne password authentication failed for user. When I check with console.log() I see exactly what I expect. If I change a password to ASCII both in the db and the connection string, everything works well. But I need the old Unicode password to be consumed...

I tried both https://github.com/brianc/node-postgres/wiki/Client

new pg.Client({...password: Código

and

conString = "postgres://...Código@"

I know that both ODBC (Driver={PostgreSQL UNICODE};) and JDBC (;Unicode=true) support UTF in connection string. I find nothing on Node.js pg module UTF support.

Please help.

I saw http://www.connectionstrings.com/postgresql/ and read the documentation on https://github.com/brianc/node-postgres. Please help with the question.

Thank you!


回答1:


Found a bug in /lib/client.js: crypto.createHash('md5').update('утфUTF').digest('hex') gives:

a77b17c858d93bf7455211a629df45f8

while the right md5 would be:

a=#select md5('утфutf');
               md5
----------------------------------
 6dbfa2a80226f7629e537268b0650898
(1 row)

So crypto.createHash('md5').update('утфutf', 'utf-8').digest('hex') gives

6dbfa2a80226f7629e537268b0650898

Following that

The default encoding used by the crypto module is usually 'binary' from another answer

Fixed my utf password problem. So I created PR - maybe soon it won't be a question anymore.

https://github.com/brianc/node-postgres/pull/1178



来源:https://stackoverflow.com/questions/33935749/node-postgres-utf-password-bug

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!