Je suis en train d'utiliser la nouvelle Web API.
Maintenant je ne sais pas si je fais cela correctement mais j'essaie de configurer mon API pour renvoyer un cookie d'authentification dans l'en-tête de HttpResponseMessages à utiliser dans une autre application MVC.
Je suis en train d'utiliser FormsAuthenticationTicket car je pense que c'est ce que je dois utiliser comme
public HttpResponseMessage Get(LoginModel model)
{
if (model.UserName == "bob")
{
// if (Membership.ValidateUser(model.UserName, model.Password))
// {
var msg = new HttpResponseMessage(HttpStatusCode.OK);
var expires = DateTime.Now.AddMinutes(30);
var auth = new FormsAuthenticationTicket(1, model.UserName, DateTime.Now, expires,
model.RememberMe,"password",
FormsAuthentication.FormsCookiePath);
var cookie = new HttpCookie("user");
cookie.Value = FormsAuthentication.Encrypt(auth);
cookie.Domain = "localhost";
cookie.Expires = expires;
msg.Headers.Add("result",cookie.Value);
return msg;
// }
}
return new HttpResponseMessage(HttpStatusCode.Forbidden);
//else
//{
// return "The user name or password provided is incorrect.";
//}
}
maintenant dans mon contrôleur de connexion de mon application MVC, j'appelle le service et je récupère la valeur des données de l'en-tête que j'ai définie dans le contrôleur API.
string data = response.Headers["result"].ToString();
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(data);
Chaque fois que j'essaie d'exécuter FormsAuthentication.Decrypt, je reçois une erreur
Impossible de valider les données.
Je suppose que c'est parce que lorsque l'API chiffre les données, elle utilise une sorte de clé que le site web ne connaît pas. Ai-je raison ?
Est-ce que quelqu'un peut aider ?
Merci