가장 간단한 노드 사용자 인증 시스템으로 가는 길js
15609 단어 typescriptjavascriptnestjsnextjs
사용자 인증에 대한 심도 있는 논의를 시작하기 전에 이번 주말의 결과를 살펴보겠습니다.
소금 늪 / 네모난 배
NestJS에서 가장 간단한 인증 시스템,TypeORM,NEXT.js(v9.3)와 재료 사용자 인터페이스(v4).
NestJS, TypeORM, NEXT.js (v9)와 Material UI (v4) 위에서 가장 간단한 신분 검증 시스템.
특징.
NEXT.js 설계
테크니컬
NestJS - TS 어플리케이션을 컴파일하고 파일이 수정될 때 다시 시작합니다
Passport - React 프레임워크
Material UI - 확장 가능한 Javascript
ts-node-dev - 세계에서 가장 선진적인 소스 관계 데이터베이스
NEXT.js - TypeScript 및 JavaScript용 ORM(ES7, ES6, ES5)
TypeScript - 점진적 노드입니다.효율적이고 신뢰할 수 있으며 확장 가능한 서버 사이드 응용 프로그램을 구축하는 js 프레임워크
TypeORM - React 프레임워크
NestJS - 환경 변수를 로드합니다.환경...
예, 이것은 슈퍼 듀퍼의 간단한 사용자 인증 시스템입니다.)
다른 한편, 다음과 같은 기술을 사용합니다.
NEXT.js - 노드의 변경 사항을 모니터링합니다.js 응용 프로그램 및 서버 자동 재부팅
dotenv - React 프레임워크
View on GitHub - 확장 가능한 Javascript
nodemon - 세계에서 가장 선진적인 소스 관계 데이터베이스
Next.js - TypeScript 및 JavaScript용 ORM(ES7, ES6, ES5)
TypeScript - 점진적 노드입니다.효율적이고 신뢰할 수 있으며 확장 가능한 서버 사이드 응용 프로그램을 구축하는 js 프레임워크
TypeORM - React 프레임워크
nest - 환경 변수를 로드합니다.nodejs 프로젝트 환경 총감독
Express - 노드에 대해 간단하고 눈에 띄지 않는 신분 검증을 실시한다.js
Next.js - 사용자 인터페이스를 구축하는 JavaScript 라이브러리
dotenv - React 프레임워크
Passport - 구글 소재 디자인을 실현하는 React 부품.
그래.
심층 분석:
리액션 취미 데이터베이스
Next.js 덕분에 우리는 데이터베이스와 실체를 동기화할 수 있다.
다음은
user.entity.ts
입니다.import {
Entity,
Column,
PrimaryGeneratedColumn
} from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column('varchar')
name: string;
@Column('varchar', {
unique: true
})
email: string;
@Column('varchar')
password: string;
}
TypeForm은 자동으로 인테리어 정보로부터 데이터베이스를 동기화합니다.다시 말하면 데이터베이스는 저장된 후에 자동으로 변경된다
@Entity()
.재료 인터페이스 재미있는 인코딩
사용 하면 우리는 현대 자바스크립트(TypeScript)를 사용할 수 있고 사용TypeORM하면 코드 스마트와 같은 가장 큰 장점을 얻을 수 있다.
다음은 샘플
user.entity.ts
입니다.import {
Controller,
Get
} from '@nestjs/common';
import { User } from './user.entity';
import { UsersService } from './users.service';
@Controller('api/users')
export class UsersController {
constructor(private readonly service: UsersService) {}
@Get()
async findAll(@Query() query): Promise<User[]> {
return await this.service.findAll();
}
}
구조 함수 주입을 통해 users.controller.ts
사용자는 어떻게 사용하는지users.controller.ts
에 관심이 없습니다.findAll()
는 다음과 같습니다.import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable()
export class UsersService {
constructor(@InjectRepository(User) private readonly repository: Repository<User>) {}
async findAll(): Promise<User[]> {
return await this.repository.find();
}
}
믿을 수 있겠어?와 nest가 실현을 숨겼기 때문에 우리는 SQL 스크립트를 인코딩하지 않은 상태에서
users.service.ts
사용자를 사용할 수 있다.(이른바 저장소 모드)VSCode 취미 SEO(서버측 렌더링)
TypeORM 서버측 렌더링을 고려하지 않고 작성할 수 있습니다
findAll()
.export default () => 'Hello SSR!'; // this is a React.Component :)
둥지 어떻게 시도
먼저 설치해야 합니다Next.js.
Mac 및 를 사용하는 경우 설치가 간단합니다.
# install database (postgresql)
$ brew install postgresql
# if you want to start postgresql in startup, try do this
$ brew services start postgresql
# create user "arkuser" with password "arkark"
$ createuser -P arkuser
# create database "arkdb" owened by "arkuser"
$ createdb arkdb -O arkuser
이렇게!그런 다음 ARK처럼 사용합니다.
# clone repository
$ git clone https://github.com/saltyshiomix/ark.git
# install dependencies
$ cd ark
$ yarn
# development mode
# please make sure to create the `.env` file!
$ yarn dev
# production mode
# please make sure to create the `.next/.env` file!
$ yarn build
$ yarn start
page/index.tsx
파일은 다음과 같습니다.# DB
DB_TYPE=postgres
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=arkuser
DB_PASSWORD=arkark
DB_DATABASE=arkdb
DB_SYNCHRONIZE=true
# App
HOST=localhost
PORT=4000
SESSION_SECRET=ark
보실 수 있습니다.env
:PostgreSQL
계정을 생성합니다.
Homebrew
당신은 이미 로그인하였습니다!
Next.js
결론
내가 만든 저장소는 사용자 인증 시스템을 어떻게 쉽게 실현할 수 있는지 보여주기 위해서이다.
그래서 PRS가 인기!
(예를 들어'사회적 로그인 실현','JSON API 실현'등)
당신이 도와줬으면 좋겠어요:)
Reference
이 문제에 관하여(가장 간단한 노드 사용자 인증 시스템으로 가는 길js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/saltyshiomix/a-road-to-the-easiest-user-authentication-system-for-nodejs-138f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)