Asp.net web api 角度2+;Web API+;基于令牌的身份验证

Asp.net web api 角度2+;Web API+;基于令牌的身份验证,asp.net-web-api,angular,asp.net-web-api2,access-token,Asp.net Web Api,Angular,Asp.net Web Api2,Access Token,我正在努力学习英语 我正在尝试创建一个带有身份验证的简单博客 这是我的“添加新帖子”方法: [Authorize] // POST: api/Post public PostModel Post([FromBody]PostViewModel model) { var post = new PostModel { Body = model.Body, Titl

我正在努力学习英语

我正在尝试创建一个带有身份验证的简单博客

这是我的“添加新帖子”方法:

    [Authorize]
    // POST: api/Post
    public PostModel Post([FromBody]PostViewModel model)
    {             
        var post = new PostModel
        {
            Body = model.Body,
            Title = model.Title,
            AuthorId = IdentityExtensions.GetUserId(User.Identity),
        };
        var res = blogRepo.AddPost(post);
        return res;                 
    }
一切正常,但是
IdentityExtension.GetUserId()
不返回最新登录的用户,而是返回应用启动后的第一个用户

基本上,我正在寻找一种方法来确保当前用户在服务器和客户端都注销(客户端只是简单地删除
localStorage.removietem(“jwt”);


另外,我所做的很有可能是完全错误的,但我无法访问此控制器中的
ApplicationUserManager

好的,我发现了问题,虽然我还没有设法解决它,但我会在解决问题时更新它,我写这篇文章是为了回答这个问题,因为这个问题与我所问和所想的完全不同

问题与Thierry Templier建议的发送身份验证提示有关。我有一个导出如下标题的文件:

  export const authHeaders = new Headers();
    authHeaders.append('Accept', 'application/json');
    authHeaders.append('Content-Type', 'application/json');
    authHeaders.append('Authorization', 'Bearer ' + localStorage.getItem('jwt'));
我在需要的地方导入这个标题。但我不确定为什么它总是发送缓存值(即存储在客户机上的第一个值,正如我的问题所暗示的,它与服务器端无关)

要解决这个问题,我只需确保将存储在localstorage上的最新访问令牌发送到服务器


编辑:现在我正在构造构造函数中的标题。

如何在Angular2应用程序中发送身份验证提示?谢谢我在angular应用程序中创建了两个标头,一个用于正常呼叫,另一个用于经过身份验证的呼叫,例如这一个,基本上在用户登录时在localStorage中存储了一个访问令牌,并在标头中使用authoration:Bearer+token发送此令牌,在客户端,当用户注销,新用户登录而不是服务器时,令牌会发生变化。是不是使用某种缓存?奇怪的是,它总是返回第一个登录的用户。它是如何使用
User.Identity
参数的?我真的不确定它是否使用缓存(我对angular和web api+基于令牌的身份验证都是新手),我认为这里的问题是基于令牌的身份验证不同于数据库登录中存储的正常身份验证,我只需要对这个概念进行思考