Использование FormsAuthentication.SetAuthCookie для хранения зашифрованной строки - PullRequest
2 голосов
/ 29 ноября 2011

Начну с того, что, может быть, это излишне.

Во время процедуры входа в систему я шифрую идентификатор входа пользователя перед использованием FormsAuthentication.SetAuthCookie.

Проблема в том, что еслизашифрованная строка в конечном итоге содержит escape-символы, спасенная строка усекается до escape-символов.

Должен ли я просто отказаться от попытки зашифровать идентификатор входа пользователя?

Или естьспособ обойти эту проблему?

Вот пример строки, которая усекается: << * € õKõ ‹¯Þ \ 0ý´Gv \" ÔEaÔs0n × \ tD¦ ™ s € 7Œ >>

1 Ответ

2 голосов
/ 29 ноября 2011

Когда вы шифруете идентификатор пользователя, вы должны использовать Base64 кодирование , чтобы зашифрованные данные содержали только допустимые символы (буквенно-цифровые, + , / , = ).
Возможно, вы найдете это полезным: Convert.ToBase64String (byte [])

Пример:

string userId = "Hello";
byte[] encryptedData = GetEncryptedBytes(userId);
string encodedUserId = Convert.ToBase64String(encryptedData);
// encodedUserId is "SGVsbG8="

FormsAuthentication.SetAuthCookie(encryptedUserId);

И декодирование происходит наоборот:

string encodedUserId = "SGVsbG8=";
byte[] encryptedData = Convert.FromBase64String(encodedUserId);
string userId = GetDecryptedString(encryptedData);
...