Использование FormsAuthentication.SetAuthcookie для хранения зашифрованной строки

StackOverflow https://stackoverflow.com/questions/8316279

  •  25-10-2019
  •  | 
  •  

Вопрос

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

Во время моей подпрограммы входа в систему я шифровал идентификатор входа пользователя перед использованием FormAuthentication.setAuthcookie.

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

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

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

Вот образец строки, которая усекается: << *€ ƒkõ ‹¯Þ 0ý'gv " þeaOs0n × td¦ € 7œ >>

Это было полезно?

Решение

Когда вы шифруете идентификатор пользователя, вы должны использовать 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top