Я использую новый webapi.
Теперь я не знаю, правильно ли я это делаю, но я пытаюсь настроить API так, чтобы он возвращал файл cookie аутентификации в заголовке HttpResponseMessages для использования в другом приложении mvc.
Я использую FormsAuthenticationTicket, так как думаю, что это то, что мне нужно использовать, например
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.";
//}
}
теперь в моем контроллере входа в мое приложение mvc я вызываю службу и получаю значение данных из заголовка, который я установил в контроллере API.
string data = response.Headers["result"].ToString();
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(data);
Каждый раз, когда я пытаюсь запустить FormsAuthentication.Расшифровать Я продолжаю получать сообщение об ошибке
Невозможно проверить данные.
Я предполагаю, что это связано с тем, что когда API шифрует данные, он использует какой-то ключ, о котором веб-сайт не знает. Я прав?
Кто-нибудь может помочь?
Спасибо