이 기사는 일반적인 아키텍처를 사용하는 평균 스택 애플리케이션 내에서 사용자 인증을 탐색합니다. 안전한 사용자 관리의 주요 측면을 다룰 것입니다
핵심 인증 문제 :
프로세스는 몇 가지 중요한 요점을 다루어야합니다 :
사용자 등록.
보안 데이터 저장소 (비밀번호는 절대 직접 저장됩니다)
<.> 사용자 로그인.
페이지 방문에서 활성 사용자 세션 유지
인증 된 사용자에 대한 특정 페이지에 대한 액세스 제한
로그인 상태에 따라 사용자 인터페이스를 동적으로 조정합니다 (예 : "로그인"또는 "내 프로필"버튼 표시).
고급 인증 개요 :
코드를 탐구하기 전에 높은 수준의 인증 흐름을 살펴 보겠습니다.
데이터 스토리지 : 해시 암호를 포함한 사용자 데이터는 MongoDB에 있습니다.
API (Express.js) : express.js api 핸들 사용자 데이터에 대한 CRUD (CREATE, Read, Update 및 Delete).
클라이언트 측 상호 작용 (Angular) : Angular 응용 프로그램은 API와 상호 작용하여 JSON Web Tokens (JWTS)를 사용하여 사용자 상호 작용 및 세션 상태를 관리합니다.
jwts : JWTS 전통적인 쿠키 교체는 RESTFUL API에 의존하는 단일 페이지 응용 프로그램에 이상적입니다. 성공적인 등록 또는 로그인시 생성됩니다
세션 관리 : Angular는 사용자 세션을 유지하기 위해 JWT를 저장합니다. 보호 된 뷰를 표시하기 전에 JWT 유효성이 확인됩니다. JWT는 보호 된 경로 액세스를 위해 Express API로 다시 전송됩니다. -
보안 : 암호는 node.js의 모듈을 사용하여 해시 및 소금에 절인 것입니다. Express 내에서 Passport.js는 인증 전략을 구현합니다 (특히 사용자 이름/비밀번호 검증을위한 로컬 전략).
-
예제 응용 프로그램 구조 :
전체 코드는 Github에서 사용할 수 있습니다. 전제 조건에는 node.js, mongodb 및 angular cli. 가 포함됩니다
- 각도 적용 :
angular 앱에는 4 개의 기본 페이지가 있습니다
- 홈
레지스터
- 로그인
프로파일 (로그인 사용자에게만 액세스 가능)
-
REST API (node.js, express.js, mongodb) :
API에는 세 가지 코어 경로가 포함되어 있습니다
(post) : 사용자 등록.
(post) : 사용자 로그인.
(get) : 사용자 프로필 세부 정보를 검색합니다 (보호)
-
/api/register
Mongodb Schema (Mongoose) :
의 간단한 사용자 스키마는 , , 및 /api/login
필드를 정의합니다. 필드는 독특합니다.
-
/api/profile/:USERID
암호 해싱 및 소금 :
및 메소드, node.js의 모듈을 활용하고 비밀번호를 직접 저장하지 않고 보안 비밀번호 관리를 처리합니다.
JWT 생성 :
메소드는 모듈을 사용하여 jwts를 만듭니다. 코드에서 직접가 아니라 환경 변수로서 비밀을 단단히 보관해야합니다.
/api/models/users.js
Passport.js 구성 : email
passport.js는 Express에서 인증을 단순화합니다. 파일은 로컬 전략을 정의합니다 :
name
hash
API 엔드 포인트 및 인증 : salt
email
파일은
var userSchema = new mongoose.Schema({
email: { type: String, unique: true, required: true },
name: { type: String, required: true },
hash: String,
salt: String
});
로그인 후 복사
각도 인증 서비스 :
angular service ()는 JWT 스토리지 (LocalStorage), 검색, 삭제, API 호출, 로그인 상태 검사 및 JWT의 사용자 세부 사항 추출을 관리합니다.
각도 경로 보호 :
각도 경로 가드 ()는 경로를 보호하여 로그인 한 사용자 만 액세스 할 수 있도록합니다.
결론 :
이 포괄적 인 가이드 세부 사항은 평균 스택 애플리케이션에서 안전한 인증 시스템을 구축합니다. 보안 비밀번호 처리 및 JWT 관리에 항상 우선 순위를 정해야합니다. 제공된 예제는 자신의 프로젝트에서 강력한 사용자 인증을 구현하기위한 견고한 기반을 제공합니다.
자주 묻는 질문 (FAQ) :
(원래 FAQ는 이미 매우 포괄적이고 잘 쓰여져 있습니다. 추가하면이 응답을 지나치게 길게 만들기 때문에 여기서 반복하지 않을 것입니다.) >
위 내용은 평균 스택으로 사용자 인증의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!