En utilisant FormsAuthentication.SetAuthCookie pour stocker une chaîne Encrypted

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

  •  25-10-2019
  •  | 
  •  

Question

Je vais commencer en disant, cela est peut-être exagéré.

Au cours de ma routine de connexion, je chiffre connexion de l'utilisateur id avant d'utiliser FormsAuthentication.SetAuthCookie.

Le problème est que si les extrémités de chaînes cryptées vers le haut ayant des caractères d'échappement, la chaîne qui sont sauvés est tronqué faire pour les caractères d'échappement.

Devrais-je abondone essayer de chiffrer l'identifiant de connexion de l'utilisateur?

Ou, est-il un moyen de contourner ce problème?

Voici une chaîne d'échantillon qui est tronqué: << * € ƒKõ <Þ \ 0ý'Gv \ "þEaÔs0n × \ tD| ™ s € 7½ >>

Était-ce utile?

La solution

Lorsque vous cryptez l'ID utilisateur, vous devez utiliser encodage base64 afin que les données chiffrées seront contenir que des caractères valides (alphanumériques, + , / , = ).
Vous trouverez probablement ce utile: Convert.ToBase64String (octet [])

Exemple:

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

FormsAuthentication.SetAuthCookie(encryptedUserId);

Et le décodage est l'inverse:

string encodedUserId = "SGVsbG8=";
byte[] encryptedData = Convert.FromBase64String(encodedUserId);
string userId = GetDecryptedString(encryptedData);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top