서버사이드 JavaScript 런타임 환경을 구현하기 위한 개발 도구로 Node.js가 점차 널리 사용되고 있습니다. Node.js는 이벤트 중심 방식으로 네트워크 애플리케이션을 작성하는 방법을 제공하므로 개발자는 쉽게 서버를 설정하고 웹 기반 애플리케이션을 구축할 수 있습니다.
많은 웹 애플리케이션에서 사용자 로그인은 매우 중요한 부분입니다. 데이터와 비즈니스를 관리하려면 관리자가 백엔드 관리 시스템에 로그인해야 합니다. 따라서 Node.js에서는 기본 로그인 인증 구현이 필요하며, 이 과정에는 사용자 신원 인증, 콜백 관리 등 일련의 작업이 필요합니다.
이 글에서는 미들웨어 사용, 세션 관리 사용, JSON 웹 토큰(JWT)을 사용하여 토큰 인증 구현 등 Node.js의 몇 가지 일반적인 로그인 인증 방법을 소개합니다.
미들웨어 사용
Node.js에서 미들웨어는 HTTP 요청을 처리하고 응답 수정은 물론 요청을 다음 미들웨어로 전달하는 결정을 허용하는 중요한 개념입니다. 따라서 미들웨어를 통해서도 로그인 기능 구현이 완료될 수 있습니다.
미들웨어 사용의 가장 큰 장점은 코드의 가독성과 유지 관리성을 향상시킬 수 있다는 것입니다. 동시에 반복되는 코드 모듈을 줄일 수도 있습니다.
코드 예:
const express = require('express'); const app = express(); const port = 3000; //中间件 app.use(express.urlencoded({extended: false})); app.use(express.json()); //登录页面 app.get('/login', function(req, res) { res.sendFile(__dirname + '/login.html'); }); //登录验证 app.post('/login', function(req, res){ const username = req.body.username; const password = req.body.password; if(username === 'admin' && password === '123456'){ // 验证成功,则可以将用户信息存储到session中 req.session.userinfo = req.body; res.send('登录成功'); }else{ res.send('用户名或密码错误!'); } }); app.listen(port, function(){ console.log(`Server is running on port ${port}`); });
위 코드에서는 express
미들웨어를 사용하여 HTTP 요청 및 응답을 처리하고 express-session
미들웨어를 사용하여 사용자 세션 관리를 수행합니다. . express
中间件来处理HTTP请求和响应,并使用express-session
中间件对用户会话进行管理。
使用session会话管理
在Web开发实践中,session是指在服务器端存储信息的一种机制。它以key-value的形式存储,key是sessionID,而value是一个JSON格式的对象,可以存储用户的身份信息、权限信息等。
Node.js中实现基本的会话管理需要使用express-session
中间件。在使用express-session
中间件时,需要设置一个参数secret
用于签名,这样可以保证session的安全性。同时,需要设置resave
参数和saveUnitialized
参数为false
,这可以避免session的重写和保存未初始化的session。
代码示例:
const express = require('express'); const app = express(); const session = require('express-session'); const port = 3000; //使用express-session中间件 app.use(session({ secret: 'sessiontest', resave: false, saveUnitialized: false, cookie: { maxAge: 1000 * 60 * 30 } })); // 登录页面 app.get('/login', function(req, res) { res.sendFile(__dirname + '/login.html'); }); //登录验证 app.post('/login', function(req, res){ const username = req.body.username; const password = req.body.password; if(username === 'admin' && password === '123456'){ // 验证成功,则可以将用户信息存储到session中 req.session.userinfo = req.body; res.send('登录成功'); }else{ res.send('用户名或密码错误!'); } }); //后台页面 app.get('/admin', function(req, res){ // 验证session中是否存储了用户信息 const userinfo = req.session.userinfo; if(userinfo && userinfo.username){ res.sendFile(__dirname + '/admin.html'); }else{ //如果未存储,则重定向到登录页面 res.redirect('/login'); } }); app.listen(port, function(){ console.log(`Server is running on port ${port}`); });
使用JSON Web Token(JWT)实现token认证
除了使用session来管理用户登录状态之外,还可以使用JSON Web Token(JWT)实现token认证。JWT是一种轻量、安全、灵活的身份验证协议。在该协议中,服务器生成一个包含用户信息的token,然后将该token返回给客户端。后续的请求都需要在HTTP头中携带该token。
使用JWT的好处在于它不需要在服务器上存储用户信息,而是将用户信息编码到token中,这样就减轻了服务器的存储压力。同时,由于token包含了用户信息,因此可以在客户端和服务器端之间轻易地传递用户身份信息。
要使用JWT,需要使用jsonwebtoken
库来实现查询操作,该库可以在node.js中工作和浏览器中工作。在使用jsonwebtoken
express-session
미들웨어를 사용해야 합니다. express-session
미들웨어를 사용할 때 세션의 보안을 보장할 수 있는 서명에 대한 매개변수 secret
를 설정해야 합니다. 동시에 resave
매개변수와 saveUnitialized
매개변수를 false
로 설정해야 세션 재작성 및 초기화되지 않은 세션 저장을 방지할 수 있습니다. 🎜🎜코드 샘플: 🎜const express = require('express'); const jwt = require('jsonwebtoken'); const app = express(); const port = 3000; //生成Token app.post('/login', function(req, res){ const username = req.body.username; const password = req.body.password; if(username === 'admin' && password === '123456'){ const userinfo = { name: username } //在jsonwebtoken中生成Token jwt.sign(userinfo, 'secretkey', {expiresIn: '10min'}, function(err, token){ if(err) throw err; res.json({ token: token }); }) }else{ res.send('用户名或密码错误!'); } }); // 验证Token app.get('/admin', verifyToken, function(req, res){ res.sendFile(__dirname + '/admin.html'); }); //中间件,用于验证Token function verifyToken(req, res, next){ //从请求头中获取Token const bearerHeader = req.hearders['authorization']; if(typeof bearerHeader !== 'undefined'){ const bearerToken = bearerHeader.split(' ')[1]; // 在jsonwebtoken中验证Token jwt.verify(bearerToken, 'secretkey', function(err, data){ if(err) res.sendStatus(403); req.userinfo = data; next(); }); }else{ res.sendStatus(403); } }; app.listen(port, function(){ console.log(`Server is running on port ${port}`); });🎜JWT(JSON 웹 토큰)를 사용하여 토큰 인증 구현🎜🎜세션을 사용하여 사용자 로그인 상태를 관리하는 것 외에도 JWT(JSON 웹 토큰)를 사용하여 토큰 인증을 구현할 수도 있습니다. JWT는 가볍고 안전하며 유연한 인증 프로토콜입니다. 이 프로토콜에서는 서버가 사용자 정보가 포함된 토큰을 생성한 후 클라이언트에 토큰을 반환합니다. 후속 요청은 HTTP 헤더에 토큰을 전달해야 합니다. 🎜🎜JWT를 사용하면 사용자 정보를 서버에 저장할 필요가 없지만 사용자 정보를 토큰에 인코딩하므로 서버의 저장 부담이 줄어든다는 장점이 있습니다. 동시에 토큰에는 사용자 정보가 포함되어 있으므로 클라이언트와 서버 간에 사용자 신원 정보를 쉽게 전송할 수 있습니다. 🎜🎜JWT를 사용하려면
jsonwebtoken
라이브러리를 사용하여 쿼리 작업을 구현해야 합니다. 이 라이브러리는 node.js에서 작동하고 브라우저에서 작동할 수 있습니다. jsonwebtoken
을 사용할 때 생성된 토큰이 인증되고 허용될 수 있도록 키와 유효 기간을 설정해야 합니다. 🎜🎜코드 예시: 🎜rrreee🎜위의 방법을 통해 Node.js에서 기본 로그인 인증 기능을 구현할 수 있습니다. 특정 비즈니스 요구 사항에 따라 다양한 솔루션을 선택할 수 있습니다. 동시에 허점이 발생하지 않고 사용자 데이터가 손상되지 않도록 로그인의 보안 및 안정성에도 주의를 기울여야 합니다. 🎜위 내용은 nodejs로 백엔드에 로그인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

chelectionSimple, IndependentStateVaribles; useUserEducer () useuserEducer () forcomplexStateLogicor () whenStatedSonpreviousState.1) usestate () isidealforsimpleupdatesliketogglingabooleorupdatingacounter.2) usbetterformanagingmentiplesub-vvalusorac

Usestate는 클래스 구성 요소 및 기타 상태 관리 솔루션보다 우수합니다. 국가 관리를 단순화하고 코드를 더 명확하게하고 읽기 쉽고 React의 선언적 특성과 일치하기 때문입니다. 1) Usestate는 함수 구성 요소에서 상태 변수를 직접 선포 할 수있게합니다. 2) 후크 메커니즘을 통해 다시 렌더링하는 동안 상태를 기억합니다.

useUsestate () forlocalcomponentStateManagement; 고려 사항 forglobalstate, complexlogic, orperformanceissues.1) usestate () isidealforsimple, localstate.2) useglobalstatesolutionslikereduxorcontextforsharedstate.3) optforredooxtoolkitormobxcomcoccomcoccomcoccomcoccomcoccomcoccomcoccomcoccomporccomcoccomporccomcoccomport

reusablecomponentsinreacececodemainabenabilityandefficiency는 hallowingesamecomponentacrossdifferentpartsofanapplicationorprojects.1) 그들을 retuduceredundancyandsimplifyupdates.2) theyseconsistencyinuserexperience.3) theyquireoptim

thevirtualdomisAlightIgentin-memorycopyofTherealDoModedByReaCtTooptimizeUiUpdates.itboostSperformanceByminiMizingDirectDomManipulationThevirtOdMomfirst, thenecessAppledOnyCesseAcTeActualDom.

HTML 및 React는 JSX를 통해 완벽하게 통합하여 효율적인 사용자 인터페이스를 구축 할 수 있습니다. 1) JSX를 사용하여 HTML 요소를 포함시킵니다. 2) Virtual DOM을 사용하여 렌더링 성능을 최적화, 3) 구성 요소화를 통해 HTML 구조를 관리하고 렌더링합니다. 이 통합 방법은 직관적 일뿐 만 아니라 응용 프로그램 성능을 향상시킵니다.

상태 및 소품을 통해 데이터를 효율적으로 렌더링하고 합성 이벤트 시스템을 통해 사용자 이벤트를 처리합니다. 1) usestate를 사용하여 카운터 예제와 같은 상태를 관리하십시오. 2) 버튼 클릭과 같은 JSX에 함수를 추가하여 이벤트 처리가 구현됩니다. 3) Todolist 구성 요소와 같은 목록을 렌더링하려면 주요 속성이 필요합니다. 4) 양식 처리의 경우 양식 구성 요소와 같은 usestate 및 e.preventDefault ().

반응은 HTTP 요청을 통해 서버와 상호 작용하여 데이터를 획득, 전송, 업데이트 및 삭제합니다. 1) 사용자 작동 이벤트 트리거, 2) HTTP 요청 시작, 3) 프로세스 서버 응답, 4) 구성 요소 상태 및 재 렌더 업데이트.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版
시각적 웹 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.
