网络API - 如何设置:认证要求的cookie [英] Web API - How to set cookie with authen request

查看:117
本文介绍了网络API - 如何设置:认证要求的cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经与asp.net网页API小例子。我创建了用于身份验证的API。我尝试使用设置Cookie响应头,当用户登录成功。但在接下来的要求,我找不到头的cookie。有谁能够帮助我?非常感谢!

I have built small example with asp.net web api. I create a api for authentication. I try to use set-cookie response header when user logged in successful. But in next request, i can't find cookie in header. Can anybody help me? Thanks a lot!!!

        if (repository.CheckValidUser(user))
        {
            var resp = new HttpResponseMessage();

            var cookie = new CookieHeaderValue("Authorization-Token", RSAClass.Encrypt(user.Username));
            cookie.Expires = DateTimeOffset.Now.AddDays(1);
            cookie.Domain = Request.RequestUri.Host;
            cookie.Path = "/";

            resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
            return resp;
        }
        else
        {
            throw new HttpResponseException(new HttpResponseMessage() { StatusCode = HttpStatusCode.Unauthorized, Content = new StringContent("Invalid user name or password.") });
        }

我有一些照片对我的要求

I have some photos about my request

推荐答案

您应该创建一个DelegatingHanlder坚持饼干,为为例:

You should create a DelegatingHanlder to persist cookies, for exemple:

public class MyCookieHandle : DelegatingHandler
{
    async protected override Task<HttpResponseMessage> SendAsync(
    HttpRequestMessage request, CancellationToken cancellationToken)
    {
        //
        //  Other code for retrieve user information
        //
        var cookie = request.Headers.GetCookies("Authorization-Token").FirstOrDefault();

        if (cookie == null)
        {
            cookie = new CookieHeaderValue("Authorization-Token", RSAClass.Encrypt(user.Username));
            cookie.Expires = DateTimeOffset.Now.AddDays(1);
            cookie.Domain = request.RequestUri.Host;
            cookie.Path = "/";
        }

        HttpResponseMessage resp = await base.SendAsync(request, cancellationToken);
        resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });

        return resp;
    }
}

在这里还有更多信息: HTTP在ASP中的Cookie。 NET的Web API

这篇关于网络API - 如何设置:认证要求的cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆