Spring JWT带角形和弹簧靴
我想在当前连接到spring引导后端的Angular应用程序中集成JWT身份验证 我浏览了很多教程,但大多数都不适合,因为它们都连接到Auth0。我想自己处理用户管理 我发现这个例子: 角度: 弹簧靴: 不幸的是,这个有角度的前端是有角度的4,我已经在用角度的6了。他们使用的“angular2 jwt”与Angular6不兼容。我必须使用“auth0/angular jwt” 我的问题是,在我使用登录表单之后,浏览器会再次打开一个登录弹出窗口来登录后端。但即使有合适的证书,它也不起作用。我猜,请求中缺少一些凭据。在app.module.ts中有两个旧的angular2 jwt代码,我不知道如何将其升级为auth0/angular jwtSpring JWT带角形和弹簧靴,spring,angular,spring-boot,jwt,Spring,Angular,Spring Boot,Jwt,我想在当前连接到spring引导后端的Angular应用程序中集成JWT身份验证 我浏览了很多教程,但大多数都不适合,因为它们都连接到Auth0。我想自己处理用户管理 我发现这个例子: 角度: 弹簧靴: 不幸的是,这个有角度的前端是有角度的4,我已经在用角度的6了。他们使用的“angular2 jwt”与Angular6不兼容。我必须使用“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文档复制粘贴):
由于迁移并不简单,而且花费了我很多时间,请随意询问。我很有可能知道答案。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 {}