En utilisant FormsAuthentication.SetAuthCookie pour stocker une chaîne Encrypted
-
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½ >>
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);