我提前道歉,因为我看过几篇关于此的帖子,但尽管经过多次尝试,我仍无法解决我的问题。
我使用的是 Angular 13.3.9
我尝试使用此处所述的出口路由器:https ://angular.io/api/router/RouterOutlet
我的目标是根据html代码中不同地方的路由加载组件。
这是尝试过的最简单的代码:
路由器
const routes: Routes = [
{ path: 'challenge/pwd', component: ChallengePwd, outlet: 'challenge-pwd' },
{ path: 'identifier', component: Identifier, outlet: 'identifier' }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)
应用程序组件.html
<main>
<section>
<logo-loader></logo-loader>
<section class="presentation">
<router-outlet name="identifier"></router-outlet>
<router-outlet name="challenge-pwd"></router-outlet>
</section>
</section>
</main>
Run Code Online (Sandbox Code Playgroud)
当我尝试访问 url http://localhost:4201/identifier 时
我收到错误:Error: Cannot match any routes. URL Segment: 'identifier'
我还尝试将出口路由封装在父组件中,如下所示:
const routes: Routes = [
{
path: 'oauth',
component: MainPage, …Run Code Online (Sandbox Code Playgroud) 我正在使用 Angular 8.0.3 和 keycloak 6.0.1 进行前端身份验证。
问题
我设法从我的应用程序进入 keycloak 登录页面。使用我的登录详细信息登录后,出现错误:
-localhost/:1 Access to XMLHttpRequest at ' https://localhost:8080/auth/realms/pwe-realm/protocol/openid-connect/token ' from origin ' http ://localhost:4200 ' 已被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。
-Keycloak init failed Keycloak 初始化过程中发生错误。
请问你能帮帮我吗 ?
我的 Keycloak 配置:
1 领域:pwe-realm
2 客户端:
-pwe-api(用于我的后端)
-pwe-web(用于我的身份验证前端)
pwe-web 配置:
客户端协议:openid-connect
访问类型:public
有效重定向 Uris:http//:localhost:4200/(我也试过“*”)
我的代码(我正在使用这个库:keycloak-angular):
环境.ts:
import {KeycloakConfig} from 'keycloak-angular';
const keycloakConfig: KeycloakConfig = {
url: 'https://localhost:8080/auth',
realm: 'pwe-realm',
clientId: 'pwe-web'
};
export const environment = {
production: false, …Run Code Online (Sandbox Code Playgroud) authentication xmlhttprequest keycloak keycloak-services angular
我正在使用 Angular 8.0.3、keycloak 8.0.0 和keycloak-service 7.0.1
问题
我设法从我的 angular 应用程序配置了身份验证。所以每次我在没有授权标头的情况下继续我的应用程序时,我都会被重定向到 keycloak 登录页面。
如果我想让未登录的人访问公共页面(例如“/public/cities”)而不重定向到 keycloak 登录页面,我应该使用“bearerExcludedUrIs”吗?如果是这样,我应该穿什么?如果没有,如何进行?
从更一般的角度来看,提供的服务中的keycloak初始化函数有一个initOption部分。我并不完全理解其所有属性(onLoad、token、refreshToken、idToken、timeSkew、sheckLoginIframe、checkLoginIframeInterval、responseMode、flow)的含义。如果有开悟的人愿意与我分享他的知识,可以开导我,我将不胜感激......
我的代码
我正在使用 ngDoBootstrap 来引导库并配置 keycloak-angular。在这个例子中,我试图允许所有带有正则表达式 /.*/ 的 url(但没有任何变化)。
const keycloakService = new KeycloakService();
@NgModule({
declarations: [
AppComponent,
HeaderComponent,
LoginComponent
],
imports: [
KeycloakAngularModule,
BrowserModule,
AppRoutingModule,
CoreModule,
SharedModule,
PagesModule
],
providers: [
{
provide: KeycloakService,
useValue: keycloakService,
}
],
entryComponents: [AppComponent]
})
export class AppModule implements DoBootstrap {
async ngDoBootstrap(app) {
const { keycloakConfig } = environment;
try {
keycloakService.init({
config: keycloakConfig,
initOptions: { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 NestJS 项目,我试图在记录器中访问executionContext,以按请求过滤日志。
我每个可注入都有一个记录器实例,我想保留这种行为(因此可注入的范围是默认的)。
为此,我尝试创建一个装饰器,从请求中获取上下文并将其传递给子服务(如记录器中),最终获取记录器中的上下文...
我不确定是否清楚......现在,这是我的代码:
export const Loggable = () => (constructor: Function) => {
for (const propertyName of Reflect.ownKeys(constructor.prototype)) {
let descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, propertyName);
const isMethod = descriptor.value instanceof Function;
if (!isMethod)
continue;
const originalMethod = descriptor.value;
const routeArgsMetada = Reflect.getMetadata(ROUTE_ARGS_METADATA, constructor, propertyName as string);
descriptor.value = function (...args: any[]) {
const result = originalMethod.apply(this, args);
//TODO : retrieve the request / contextExecution
//TODO : pass the request / contextExecution to children functions...
return result;
};
Reflect.defineProperty(constructor.prototype, …Run Code Online (Sandbox Code Playgroud)