Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring JWT带角形和弹簧靴_Spring_Angular_Spring Boot_Jwt - Fatal编程技术网

Spring JWT带角形和弹簧靴

Spring JWT带角形和弹簧靴,spring,angular,spring-boot,jwt,Spring,Angular,Spring Boot,Jwt,我想在当前连接到spring引导后端的Angular应用程序中集成JWT身份验证 我浏览了很多教程,但大多数都不适合,因为它们都连接到Auth0。我想自己处理用户管理 我发现这个例子: 角度: 弹簧靴: 不幸的是,这个有角度的前端是有角度的4,我已经在用角度的6了。他们使用的“angular2 jwt”与Angular6不兼容。我必须使用“auth0/angular jwt” 我的问题是,在我使用登录表单之后,浏览器会再次打开一个登录弹出窗口来登录后端。但即使有合适的证书,它也不起作用。我猜,请

我想在当前连接到spring引导后端的Angular应用程序中集成JWT身份验证

我浏览了很多教程,但大多数都不适合,因为它们都连接到Auth0。我想自己处理用户管理

我发现这个例子:

角度:

弹簧靴:

不幸的是,这个有角度的前端是有角度的4,我已经在用角度的6了。他们使用的“angular2 jwt”与Angular6不兼容。我必须使用“auth0/angular jwt”

我的问题是,在我使用登录表单之后,浏览器会再次打开一个登录弹出窗口来登录后端。但即使有合适的证书,它也不起作用。我猜,请求中缺少一些凭据。在app.module.ts中有两个旧的angular2 jwt代码,我不知道如何将其升级为auth0/angular jwt

export function authHttpServiceFactory(http: Http) {
  return new AuthHttp(new AuthConfig({
    headerPrefix: 'Bearer',
    tokenName: TOKEN_NAME,
    globalHeaders: [{'Content-Type': 'application/json'}],
    noJwtError: false,
    noTokenScheme: true,
    tokenGetter: (() => localStorage.getItem(TOKEN_NAME))
  }), http);
}

有人能帮我解决这个问题吗。可能是我猜错了,可能是别的什么原因


旁注;我刚刚更改了前端,但尝试从示例连接到后端。如果我同时使用该示例中的前端和后端,那么它工作正常。

几个月前,我成功地从angular2 jwt迁移到auth0/angular jwt。进行此操作时,您必须记住:

  • auth0/angular jwt使用新的angular HttpClient库,因此如果您想使用它,您必须将所有应用程序迁移到它(我建议您还是这样做,新库非常令人惊讶)
  • 新的angular jwt使用HttpInterceptors-这允许您将jwt直接连接到HttpClient筛选器链。因此,您不必迁移上面的代码。您必须将其完全删除并替换为拦截器初始化:(从auth0/jwt文档复制粘贴):

请记住在根模块中应用此代码,然后在不做任何更改的情况下使用HttpClient,拦截器将自动应用JWT。如果出现问题,应归咎于白名单/黑名单。目前这些字段的实现非常糟糕,并导致正则表达式等出现问题。

由于迁移并不简单,而且花费了我很多时间,请随意询问。我很有可能知道答案。

jhipster是如何使用spring boot执行JWT的一个很好的例子。@Peter-如果您解决了问题,是否可以发布代码。我现在正在迁移到auth0/angular jwt,并且有很多问题。如果你愿意,我可以在Github中分享我的代码。非常感谢你,Michal。你的信息对我帮助很大,尽管这不是我代码中的问题。但这你不知道。你把我引向正确的方向。我的问题是,由于angular 6中的synthax发生了更改,所以没有发送头。我不能只将头附加到header对象,我必须使用.set()。现在它正在工作,我只需要在spring boot中实现示例中的后端backend@Michal-我现在正在实现auth0/angular jwt。不知道如果用户确实有日志或没有日志,为什么它从不进行身份验证。我的意思是,当我点击User lick时,如果用户没有进行身份验证,它通常会转到登录页面。但现在它直接进入用户页面。你能帮帮我吗。如果gihub中有完整的代码,请您共享。@Michal-如果您愿意,我可以在中共享我的代码github@Michal-我可以登录,但对于下一个rest调用(GET请求),它不授权。我想它确实通过了令牌。如何传递代币?
providers: [
    {provide: AuthHttp, useFactory: authHttpServiceFactory, deps: [Http]},
]
import { JwtModule } from '@auth0/angular-jwt';
import { HttpClientModule } from '@angular/common/http';

export function tokenGetter() {
  return localStorage.getItem('access_token');
}

@NgModule({
  bootstrap: [AppComponent],
  imports: [
    // ...
    HttpClientModule,
    JwtModule.forRoot({
      config: {  
        tokenGetter: tokenGetter,  
        whitelistedDomains: ['localhost:3001'],  
        blacklistedRoutes: ['localhost:3001/auth/']  
      }  
    })  
  ]  
})  
export class AppModule {}