angualr的token 验证会经常用在登录,注册等地方

对于token的使用方法按照以下步骤进行使用即可

1.新建一个服务

  ng g service services /+服务名

 egng g service services/player

会在根目录下出现一个叫service的服务文件夹

文件夹中会存在一个player.service,ts和一个player.service,spec.ts

2.在根目录下新建一个文件夹,是用来封装token的写法

eg: 文件夹的名字为utils

  1. 在文件夹中新建一个名字为token.util.ts的文件
  2. 打开此文件
  3. 在此文件中注入并声明 import {Injectable,BgModule} from '@angular/core'
  4. 声明引入的组件模块 @Injectable()   @NgModule()
  5. 开始进行封装

  export default class TokenUtil{    

    private name:string = 'jwt-token'

     getToken():string {

        return localStorage.getItem(this.name)

     }

     setToken(token:string):void{

      localStorage.setItem(this.name,token)

    }

  }

3.在app目录中新建文件夹http-interceptors
  • 在此文件夹中新建index.ts文件和noop-interceptor.ts文件
  • 在index.ts中写入

    /* "Barrel" of Http Interceptors */

    import { HTTP_INTERCEPTORS } from '@angular/common/http';

    import { NoopInterceptor } from './noop-interceptor';

    /** Http interceptor providers in outside-in order */

    export const httpInterceptorProviders = [

      { provide: HTTP_INTERCEPTORS, useClass: NoopInterceptor, multi: true },

    ];

  • 在noop-inter-interceptor.ts文件中写入
  1. 先引用注入

    import TokenUtil from '../../utils/token.util'
  2. import { AppRoutingModule } from './app-routing.module';
  3. @Injectable()
  4. export class NoopInterceptor implements HttpInterceptor {
      constructor(private tokenUtil: TokenUtil) { }
      intercept(req: HttpRequest<any>, next: HttpHandler)
      {
        // Get the auth token from the service.
        const authToken = this.tokenUtil.getToken();
        // Clone the request and replace the original headers with
        // cloned headers, updated with the authorization.
        const authReq = req.clone({
          headers: req.headers.set('Authorization', `bearer ${authToken}`)
        });
        // send cloned request with header to the next handler.
        return next.handle(authReq);
      }
    }
  • 在app.module.ts中引用和注入新建的一系列文件 TokenUtil 和 httpInterceptorProviders 组件
  • @NgModule中的imports中声明一次
  1. TokenUtil
  2. ReactiveFormsModule
  • 在providers中进行一次(使用)
    providers: [httpInterceptorProviders],

4.在对应的组件中ts中进行一次使用 服务引用

  import { PlayerService} from '../../player.service';
 
  constructor(private tokenUtil: TokenUtil, private route: ActivatedRoute)
 
 
 
 
 

最新文章

  1. 云服务器 Centos7.0 部署
  2. mac 下修改jenkins的 端口号
  3. LeetCode-Search a 2D Matrix
  4. 移动前端头部标签(HTML5 head meta)
  5. ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云
  6. Intellij IDEA 快速创建Spring Web 项目
  7. .NET基础之自定义泛型
  8. Python 文件的IO
  9. 13年山东省赛 The number of steps(概率dp水题)
  10. 使用 visualstudio code 编辑器调试执行在 homestead 环境中的 laravel 程序
  11. wp8数据存储--独立存储文件 【转】
  12. 【干货分享】sketch 前端开发常用技巧总结
  13. 微软的STRIDE模型
  14. spring的list ,set,map,properties注入(set,get注入)
  15. [AtCoder arc090F]Number of Digits
  16. MySQL的Explain关键字查看是否使用索引
  17. vector 的用法--------------自绘资源
  18. POJ2387 Til the Cows Come Home【Kruscal】
  19. csharp C#数字字符串排序orderby的问题解决
  20. post请求测试代码

热门文章

  1. LinQ实现DataTable不定行转列 行列转换,有图
  2. Centos7 Putty SSH密钥登录
  3. Windows下VS Code打开黑屏解决办法(这样真的行)
  4. HTML惊天地
  5. 【转】fastjson-1.2.47-RCE
  6. When does VideoToolbox&#39; VTCompressionSession benefit from hardware acceleration?
  7. Java程序员的魔法杖-Arthas 3.1.2版本发布了
  8. sqlldr导入数据取消回显记录条数
  9. Shiro RememberMe 1.2.4 反序列化漏洞详细复现
  10. HDU5952 dfs+剪枝