5

新しい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サイトが認識していないある種のキーを使用していることが原因だと思います。私は正しいですか?

誰かが助けることができますか?

ありがとうございました

4

1 に答える 1