前言
在现代 Web 开发中,鉴权是一个很重要的问题。使用 JWT(Json Web Token) 已经成为一个很流行的解决方案。在 Angular2 开发中,有一个非常好用的 npm 包 spittal-angular2-jwt,本文将介绍如何使用这个 npm 包。
安装
首先打开命令行工具,cd 到你的 Angular2 项目的根目录下,输入下述命令安装 spittal-angular2-jwt:
npm install spittal-angular2-jwt --save
使用
在使用 JWT 进行鉴权的时候,需要将 token 存储在一个地方,并将其发送至服务端。获取 token 可以通过登录等方式得到,我们将其保存在 localStorage 中,以便在后续的请求中使用。
把以下代码加入 app.module.ts 文件:
-- -------------------- ---- ------- ------ - -------- - ---- ---------------- ------ - ----------- - ---- ----------------- ------ - ------------- - ---- ---------------------------- ------ - ------------ - ---- ------------------ ------ - --------- - ---- ----------------------- ----------- -------- - -------------- ------------ --------- -- ------------- - ------------ -- ---------- - ------------ - -- ------ ----- --------- --
现在你可以在你的服务中去设置 headers, 以下为一个 GET 请求的示例:
-- -------------------- ---- ------- ------ - --------- - ---- ---------------- ------ - ----- ------- - ---- ---------------- ------ - --------- - ---- ----------------------- ------ ---------------------- ------------ --------- --------- --------- - ------------------ -- -------------------- ----------- ---- ------------- ------------- ----------- - ------------ ------ - -- ------ ----- ------------ - ----- - --------- ---- ----- ----- ---------- --------- - --- ------------ ------------------- ----- ----- -- ---------- - --- --- - --------------------------------- --- ---------- - --- ---------- -- ----- - ---------------------------------- ------- - - ----- - --------- ----------------------------------- --------- ------------ ------------- -- ---------------- ----------- ---- -- - ------------------ --------- - ---- -- --- -- --------------------- ----- -- -- ---------------- ------ -- - -
一旦你成功发出一个请求, 拦截器会自动的将请求拦截下来, 填充 headers 并继续发送它。
这就是 spittal-angular2-jwt, 使得在 Angular2 中使用 JWT 变得非常容易!
总结
本文介绍了如何在 Angular2 中使用 spittal-angular2-jwt 包进行身份验证,包括安装和使用,希望对大家进行参考,在实际的项目中使用 JWT 进行身份验证,可以更好的处理请求,避免一些只有登陆用户才能进行的操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006709f8ccae46eb111f06d