Ng-alain 拦截器配置http 请求忽略拦截

  • 2018-08-25 13:24:05
  • 964
  • 0

Ng-aialin 默认实现了两个拦截器,一个是jwt 拦截器,一个一般的拦截器,默认注册的是一般


的拦截器,在发送http请求的时候会默认添加token,如果没有token,则会跳转到登录页面,


配置了忽略拦截,则不会判断token是否存在。


app.nodule.ts 的 providers 默认注册的拦截器:


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

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


http请求配置拦截器忽略请求有两种方式



1 在delon.module.ts 文件里面配置忽略路径


export function delonAuthConfig(): DelonAuthConfig {

  return Object.assign(new DelonAuthConfig(), <DelonAuthConfig>{
    login_url: '/passport/login',
    ignores: [/\/login/, /passport\//, /\/passport\/register-result/],
    token_send_template: 'Bearer ${token}'
  });
}


ignore 配置的路径,发送http请求时则不会拦截,直接放行


在forRoot 把delonAuthConfig 覆盖即可,如


static forRoot(): ModuleWithProviders {
    return {
      ngModule: DelonModule,
      providers: [
        // TIPS:若不需要路由复用需要移除以下代码及模板`<reuse-tab></reuse-tab>`
        {
          provide: RouteReuseStrategy,
          useClass: ReuseTabStrategy,
          deps: [ReuseTabService],
        },
        // TIPS:@delon/abc 有大量的全局配置信息,例如设置所有 `simple-table` 的页码默认为 `20` 行
        {provide: AdSimpleTableConfig, useFactory: simpleTableConfig},
        {provide: AdPageHeaderConfig, useFactory: pageHeaderConfig},
        {provide: DelonAuthConfig, useFactory: delonAuthConfig},
        //http 域名配置
        {provide: BASE_PATH, useValue: "http://localhost:8080"}
      ],
    };
  }



2  发送http 请求的时候带上


_allow_anonymous 参数


//用户登录

login(username:string,password:string):Observable<any>{

  return this.httpClient.post<any>(`${this.basePath}/api/login`,null,
  
{"username":username,"password":password,"_allow_anonymous":true})

}



回复
举报
全部回复(0)

参与讨论