新しいwebapiを使用しています。
これを正しく行っているかどうかはわかりませんが、別のmvcアプリケーションで使用するためにHttpResponseMessagesヘッダー内の認証Cookieを返すようにAPIを設定しようとしています。
私は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.Decryptを実行しようとするたびに、エラーが発生し続けます
データを検証できません。
APIがデータを暗号化するときに、Webサイトが認識していないある種のキーを使用していることが原因だと思います。私は正しいですか?
誰かが助けることができますか?
ありがとうございました