2

我正在 Angular2 下开发应用程序,我选择了 Nebular 前端 - https://akveo.github.io/nebular/#/home

文档对我来说并不是很详细,而且我不是 Angular2 专家。

我在部分挣扎-API端点https://akveo.github.io/nebular/#/docs/auth/configuring-a-provider

我可以在哪里保存 API 基点?在哪个文件或文件的一部分?

受影响的代码:

{
 baseEndpoint: 'http://...
...

我的代码(core.module.js):

import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NbEmailPassAuthProvider, NbAuthModule } from '@nebular/auth';

import { throwIfAlreadyLoaded } from './module-import-guard';
import { DataModule } from './data/data.module';
import { AnalyticsService } from './utils/analytics.service';

import { environment } from './../../environments/environment';

const NB_CORE_PROVIDERS = [
  ...DataModule.forRoot().providers,
  ...NbAuthModule.forRoot({
    providers: {
      email: {
        service: NbEmailPassAuthProvider,
        config: {
          delay: 3000,
          login: {
            rememberMe: true,
          },
        },
      },
    },
    forms: {
      validation: {
        password: {
          required: true,
          minLength: 6,
          maxLength: 255,
        },
        email: {
          required: true,
        }
      }
    }
  }).providers,
  AnalyticsService
];

@NgModule({
  imports: [
    CommonModule,
  ],
  exports: [
    NbAuthModule,
  ],
  declarations: [],
})
export class CoreModule {
  constructor(@Optional() @SkipSelf() parentModule: CoreModule) {
    throwIfAlreadyLoaded(parentModule, 'CoreModule');
  }

  static forRoot(): ModuleWithProviders {
    return <ModuleWithProviders>{
      ngModule: CoreModule,
      providers: [
        ...NB_CORE_PROVIDERS,
      ],
    };
  }
}
4

3 回答 3

1

我正试图让它发挥作用,我在手册的同一部分。据我所知,baseEndpoint: 'http://...事物和其他配置在身份验证提供程序config变量上进行。看起来它的类型NgEmailPassAuthProviderConfig(定义在 上@nebular/auth/providers/email-pass-auth.options)。

@NgModule({
  imports: [
   // ...

   NbAuthModule.forRoot({
         providers: {
           email: {
             service: NbEmailPassAuthProvider,
             config: {
                baseEndpoint: 'http://localhost:8080', // <-- here
                login: {
                  rememberMe: true,
                },
             },
           },
         },
       }), 
  ],
});

我已经设法让它在 Spring rest API 上调用 api 方法。我可以在浏览器上看到 HttpResponse,status: 200但仍然收到“哦,快!出了点问题”。上的消息NbLoginComponent

于 2018-04-25T00:20:32.047 回答
1

为了正确创建 api,请按照以下步骤操作

1)在你的本地主机上实现这个

2)将此代码添加到core.module.ts

 strategies: [
      NbPasswordAuthStrategy.setup({
        name: 'email',
        login: {
          requireValidToken: false,
        },
        baseEndpoint: 'http://localhost:4400/api/auth/',
        logout: {
          redirect: {
            success: '/auth/login',
            failure: '/auth/login',
          },
        },
        requestPass: {
          redirect: {
            success: '/auth/reset-password',
          },
        },
        resetPass: {
          redirect: {
            success: '/auth/login',
          },
        },
        errors: {
          key: 'data.errors',
        },
      }),
    ],
于 2018-10-19T10:24:32.840 回答
0

我建议在项目的根目录中创建一个代理proxy.conf.json,内容为

{
   "/api/*": {
     "target": "http://localhost",
     "secure": false,
     "logLevel": "debug"
   }
}

然后使用命令 $ ng serve --port 8097 --proxy-config proxy.conf.json 启动 Angular 应用程序

记住您在 ng serve 命令中提到的 * 8097 * 端口

完成添加您的基本网址,如下所示:

{
 baseEndpoint: '/api/',
...

有关代理配置的更多信息,请参阅https://morioh.com/p/07bddb33e3ab

我希望这有帮助

于 2019-12-08T20:28:28.927 回答