2016-04-08 15 views
1

HttpContext.Current.Responseにクッキーを追加するさまざまな方法を試みました。ブラウザには、追加しているCookieが表示されません。助けてください!CookieをHttpContextレスポンスに設定する

はここ(ステートレス)RESTに基づいて心WebAPIの中に保管してください私のAPIコントローラ

public IHttpActionResult Get(string username, string password) 
{ 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "*"); 

    //This does not work 
    HttpCookie cookie = new HttpCookie("ACA-Cookie", "This better work!"); 
    cookie.Expires = DateTime.Now.AddDays(2); 
    cookie.Domain = Request.RequestUri.Host; 
    cookie.Path = "/"; 
    HttpContext.Current.Response.SetCookie(cookie); 

    //This does not work 
    var cookie = new HttpCookie("MyCookie", DateTime.Now.ToLongTimeString()); 
    HttpContext.Current.Response.Cookies.Add(cookie); 
    return Ok(HttpStatusCode.OK); 
} 

答えて

0

私のシナリオでは、Angular JSとWeb APIを使用します。しかし、私はASP.Net MVCログインを使用してユーザーを認証します。

基本的に、ユーザーログインはASP.Net Identityを使用するASP.Net MVCページです。認証が成功すると、MVC SPA(シングルページアプリケーション)にリダイレクトされます。 Web APIを要求するたびにAuthenticated Cookieを維持します。

MVCを使用せずに純粋なWeb APIコールを使用する場合は、トークンベースの承認を参照することをお勧めします。これはWeb APIからのクッキーに応答するよりはるかに簡単で優れています。

0

で、クッキーは状態を維持するための方法です。 2つのコンセプトは、実際には互いに相反しています。 Cookieを使用する場合は、代わりにASP.net MVCを使用することを検討してください。これは、よりシリアライズされたフレームワークでシリアル化されたデータを返すことができるからです。

+0

これは大変助かります! ログインのためだけにmvcコントローラを使用して、残りのリクエストに対してCookieを設定することをお勧めしますか? –

+0

私の会社では、Rest and Basic Authenticationで.NetのWeb APIを開発しました。クレデンシャルはHTTPリクエストヘッダーで渡されます。 – derloopkat

+0

WebAPIコントローラに要求ヘッダーで資格情報を渡すこともできるとderloopkatに同意します。ただし、RESTを使用すると、すべてのリクエストで認証を要求することが一般的です(ステートレスにする)。 – Luke

関連する問題