Angular2 + Web API +基于令牌的身份验证

时间:2016-04-10 15:32:42

标签: asp.net-web-api angular asp.net-web-api2 access-token

我正在努力学习Angular2

我正在尝试使用身份验证创建一个简单的博客。

这是我添加一个新的帖子方法:

    [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.removeItem("jwt");

我也很有可能完全错误,但我无法访问此控制器中的ApplicationUserManager

1 个答案:

答案 0 :(得分:1)

好的我已经找到了问题,虽然我还没有设法解决它,但是当我这样做时我会更新这个问题,并且我正在写这个作为答案,因为问题完全不同于我的想法和想法是

问题与发送身份验证提示有关,正如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上的最新访问令牌发送到服务器。

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