Angular2 + Web API + 基于令牌的身份验证
Angular2 + Web API + token based authentication
我正在努力学习 Angular2
我正在尝试创建一个带身份验证的简单博客。
这是我添加的新 post 方法:
[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()
不是return最新登录的用户,而是应用程序启动后的第一个用户。
基本上我正在寻找一种方法来确保当前用户在服务器和客户端上注销(客户端只是简单地删除 localStorage.removeItem("jwt");
)
也很有可能我所做的是完全错误的,但我无法访问此控制器中的 ApplicationUserManager
。
好的,我找到了问题,虽然我还没有设法解决它,但我会在解决时更新它,我写这个作为答案,因为问题与我所问的完全不同并且以为是。
问题与 Thierry Templier 建议的发送身份验证提示有关。我有一个像这样导出 headers 的文件:
export const authHeaders = new Headers();
authHeaders.append('Accept', 'application/json');
authHeaders.append('Content-Type', 'application/json');
authHeaders.append('Authorization', 'Bearer ' + localStorage.getItem('jwt'));
然后我在需要的地方导入这个 header。但我不确定为什么它总是发送一个缓存值(即存储在客户端的第一个值,它与我的问题暗示的服务器端无关)。
要解决此问题,我只需确保将存储在本地存储中的最新 access-token 发送到服务器即可。
编辑:现在我正在构造函数中构建标题。
我正在努力学习 Angular2
我正在尝试创建一个带身份验证的简单博客。
这是我添加的新 post 方法:
[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()
不是return最新登录的用户,而是应用程序启动后的第一个用户。
基本上我正在寻找一种方法来确保当前用户在服务器和客户端上注销(客户端只是简单地删除 localStorage.removeItem("jwt");
)
也很有可能我所做的是完全错误的,但我无法访问此控制器中的 ApplicationUserManager
。
好的,我找到了问题,虽然我还没有设法解决它,但我会在解决时更新它,我写这个作为答案,因为问题与我所问的完全不同并且以为是。
问题与 Thierry Templier 建议的发送身份验证提示有关。我有一个像这样导出 headers 的文件:
export const authHeaders = new Headers();
authHeaders.append('Accept', 'application/json');
authHeaders.append('Content-Type', 'application/json');
authHeaders.append('Authorization', 'Bearer ' + localStorage.getItem('jwt'));
然后我在需要的地方导入这个 header。但我不确定为什么它总是发送一个缓存值(即存储在客户端的第一个值,它与我的问题暗示的服务器端无关)。
要解决此问题,我只需确保将存储在本地存储中的最新 access-token 发送到服务器即可。
编辑:现在我正在构造函数中构建标题。