찾다
웹 프론트엔드프런트엔드 Q&Anodejs로 백엔드에 로그인하는 방법

서버사이드 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

세션 관리 사용

웹 개발 실무에서 세션이란 서버 측에 정보를 저장하는 메커니즘을 의미합니다. key-value 형태로 저장되며, 키는 sessionID, 값은 JSON 형식의 객체로 사용자의 신원 정보, 권한 정보 등을 저장할 수 있습니다.

Node.js에서 기본 세션 관리를 구현하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
usestate () vs. usereducer () : 주 요구에 맞는 올바른 후크 선택usestate () vs. usereducer () : 주 요구에 맞는 올바른 후크 선택Apr 24, 2025 pm 05:13 PM

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

usestate ()로 상태 관리 : 실용적인 자습서usestate ()로 상태 관리 : 실용적인 자습서Apr 24, 2025 pm 05:05 PM

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

usestate ()를 사용하고 대체 상태 관리 솔루션을 고려할 때usestate ()를 사용하고 대체 상태 관리 솔루션을 고려할 때Apr 24, 2025 pm 04:49 PM

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

React의 재사용 가능한 구성 요소 : 코드 유지 관리 및 효율성 향상React의 재사용 가능한 구성 요소 : 코드 유지 관리 및 효율성 향상Apr 24, 2025 pm 04:45 PM

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

React의 가상 DOM : 효율적인 업데이트를 통한 성능 향상React의 가상 DOM : 효율적인 업데이트를 통한 성능 향상Apr 24, 2025 pm 04:41 PM

thevirtualdomisAlightIgentin-memorycopyofTherealDoModedByReaCtTooptimizeUiUpdates.itboostSperformanceByminiMizingDirectDomManipulationThevirtOdMomfirst, thenecessAppledOnyCesseAcTeActualDom.

HTML 및 React의 통합 : 실용 가이드HTML 및 React의 통합 : 실용 가이드Apr 21, 2025 am 12:16 AM

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

React 및 HTML : 데이터 렌더링 및 처리 이벤트React 및 HTML : 데이터 렌더링 및 처리 이벤트Apr 20, 2025 am 12:21 AM

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

백엔드 연결 : 반응이 서버와 상호 작용하는 방법백엔드 연결 : 반응이 서버와 상호 작용하는 방법Apr 20, 2025 am 12:19 AM

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

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

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

mPDF

mPDF

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

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

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

맨티스BT

맨티스BT

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