Utilizzando FormsAuthentication.SetAuthCookie per memorizzare una stringa criptata
-
25-10-2019 - |
Domanda
I Comincerò dicendo, forse questo è eccessivo.
Nel corso della mia routine di login, cifrare id di login dell'utente prima di usare FormsAuthentication.SetAuthCookie.
Il problema è che se le estremità delle stringhe criptate fino caratteri di escape che hanno, la stringa che vengono salvati ottiene troncato fare per i caratteri di escape.
devo solo abondone cercando di crittografare id di login dell'utente?
In alternativa, c'è un modo per aggirare questo problema?
Ecco una stringa di esempio che viene troncato: << * € ƒKõ
Soluzione
Quando si crittografa l'ID utente, è necessario utilizzare codifica Base64 in modo che i dati crittografati saranno contenere solo caratteri validi (alfanumerici, + , / , = ).
Si sarebbe probabilmente trovare questo utile: Convert.ToBase64String (byte [])
Esempio:
string userId = "Hello";
byte[] encryptedData = GetEncryptedBytes(userId);
string encodedUserId = Convert.ToBase64String(encryptedData);
// encodedUserId is "SGVsbG8="
FormsAuthentication.SetAuthCookie(encryptedUserId);
E decodifica è il contrario:
string encodedUserId = "SGVsbG8=";
byte[] encryptedData = Convert.FromBase64String(encodedUserId);
string userId = GetDecryptedString(encryptedData);