1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/catlair-graduation-object-server

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Для Nest, фреймворка на TypeScript, предназначенного для создания эффективных и расширяемых серверных приложений, вдохновлённого Angular, используется прогрессивный Node.js.

Описание

Nest framework TypeScript starter repository.

Установка зависимостей

Используйте пакетный менеджер pnpm для установки зависимостей. Также можно использовать npm или yarn.

$ pnpm install

Запуск приложения

# development — среда разработки
$ pnpm run start

# watch mode — режим отслеживания изменений файлов
$ pnpm run start:dev

# production mode — производственная среда
$ pnpm run start:prod

Что сделано

Среда разработки

Используется cross-env NODE_ENV=development для настройки переменных для разных сред.

Может использоваться для загрузки различных конфигурационных файлов.

{ "start:dev": "cross-env NODE\_ENV=development nest start --watch" }

Конфигурационный файл

Конфигурация выполняется в файле src/config/configuration.ts. В зависимости от среды загружается файл .env в src/app.module.ts (возможно, вам больше нравится однофайловая конфигурация).

В проекте используется ConfigService для получения конфигурации.

// 注入
@Injectable()
export class HashingService {
  constructor(private readonly configService: ConfigService<Configuration>) {}

  async hash(value: string): Promise<string> {
    return await bcrypt.hash(value, this.configService.get('saltRounds'));
  }
}

// В main используется
const configService = app.get(ConfigService);
const PORT = configService.get<number>('port');

Кэширование

По умолчанию используется redis-кэширование, установите REDIS_DISABLE=true для использования memory.

src/modules/auth/auth.module.ts и src/modules/auth/auth.service.ts используют CacheService для доступа к кэшу.

Безопасность

Ограничение скорости API

То же самое, используются redis и memory-кэш.

@Module({
  imports: [
    ThrottlerModule.forRootAsync({
      inject: [ConfigService],
      useFactory: async (conifg: ConfigService<Configuration>) => ({
        ttl: 60,
        limit: conifg.get('rateLimitMax'),
        storage: conifg.get('REDIS\_DISABLE')
          ? null
          : new ThrottlerStorageRedisService(),
      }),
    }),
    AuthModule,
  ],
  providers: [
``` {
      /** 节流器 */
      provide: APP_GUARD,
      useClass: ThrottlerGuard,
    },
  ],
})
export class AppModule {}

### JWT

См. `src/modules/auth`.
Обратитесь к декоратору авторизации в `src/decorators/auth.decorator.ts`.

Декоратор метода `@Auth('admin')` означает необходимость наличия прав администратора.

Декоратор параметра `@UserReq() user: User` получает информацию о текущем пользователе (осуществляется доступ к базе данных).

Аналогично декоратор параметра `@UserJwt() user: JwtDto` получает данные пользователя JWT (не осуществляется доступ к базе данных).

Декоратор метода `AuthUnlogin()` означает, что авторизация не требуется, но будет предпринята попытка получить информацию о вошедшем пользователе.

### Журналы

Для ведения журналов используется `winston`.
См. `src/config` и `src/middleware/logger.middleware.ts`.

## Поддержка

Nest — это проект с открытым исходным кодом, лицензированный по MIT. Он может развиваться благодаря спонсорам и поддержке замечательных сторонников. Если вы хотите присоединиться к ним, пожалуйста, [прочитайте больше здесь](https://docs.nestjs.com/support).

## Оставайтесь на связи

- Автор — Камил Мысливец (Kamil Myśliwiec), [kamilmysliwiec.com](https://kamilmysliwiec.com/).
- Веб-сайт — [nestjs.com](https://nestjs.com/).
- Твиттер — [@nestframework](https://twitter.com/nestframework).

## Лицензия

Nest лицензирован по [MIT](LICENSE).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
TypeScript и 3 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/catlair-graduation-object-server.git
git@api.gitlife.ru:oschina-mirror/catlair-graduation-object-server.git
oschina-mirror
catlair-graduation-object-server
catlair-graduation-object-server
main