세션은 소개가 필요하지 않으므로 하나의 http가 하나의 최종 사용자에 대응할 수 있습니다.
세션의 핵심은 쿠키를 이용해 구현됩니다.
아마도 http가 서버에 쿠키를 설정하도록 가져오고, 서버는 사용자의 신원을 나타내는 쿠키를 얻은 다음 고정된 위치(데이터베이스, 파일)로 이동하여 해당 사용자 신원을 검색하는 것입니다. 이 요청의 요청에 ID를 할당하면 프로그램 처리 중에 사용자의 ID가 알려집니다. (PHP, ASP 또는 기타 서버측 언어로 자동 구현됩니다.)
쿠키 구현
사용자를 식별하는 쿠키는 각 사용자마다 설정되어야 합니다. 다음 규칙을 사용할 수 있습니다
등록된 이메일의 MD5 값 + 비밀번호의 MD5 값 + 랜덤코드의 MD5 값입니다. (예를 들자면 좋은 해결책이 아닐 수도 있습니다.)
서버 코드 조각:
res.setHeader("Set-Cookie", ["sid="+newUser.toCookie()+";path=/;domain="+config.domain+";expires="+new Date("2030") ]);
쿠키
sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee
쿠키를 사용하여 사용자 신원 확인 및 세션 설정
처리를 위해 모든 비정적 리소스 요청을 여기로 지시하세요. 쿠키를 받고, 쿠키를 분할하고, 데이터베이스에서 자격을 갖춘 사용자를 찾으세요. 마지막으로 next를 사용하여 다음 요청 로직으로 이동합니다.
다음 요청 로직은 req.session.user를 직접 사용하여 사용자 개체를 얻는 것입니다.
session:function(req, res, next){ req.session = {}; if( req.cookies && req.cookies.sid ){ var a = req.cookies.sid.split("|"); var hexMail = a[0]; var hexPwd = a[1]; var hexRandom = a[2]; UserModel.hexFind(hexMail, hexPwd, hexRandom, function( status ){ //console.log("hexFind", status ); if(status.code == "0"){ //req.cookiesSelecter = cookiesSelecter; req.session.user = status.result; } next(); }); }else{ next(); } }
nodejs가 세션을 통해 신원 인증을 구현하는 방법에 대해 이야기하겠습니다
nodejs 익스프레스 세션 인증
1) 모듈 가져오기
var session = require('express-session'); var cookieParser = require('cookie-parser');
2) 쿠키 적용 및 세션
app.use(cookieParser()); app.use(session({ resave: true, // don't save session if unmodified saveUninitialized: false, // don't create session until something stored secret: 'love' }));
3) 요청 시 인증 적용
app.use(function(req,res,next){ if (!req.session.user) { if(req.url=="/login"){ next();//如果请求的地址是登录则通过,进行下一个请求 } else { res.redirect('/login'); } } else if (req.session.user) { next(); } });
4) 로그인 디자인
app.get('/login',function(req,res){ res.render("login"); }); app.post('/login',function(req,res){ if(req.body.username=="love" && req.body.password=="love"){ var user = {'username':'love'}; req.session.user = user; res.redirect('/admin/app/list'); } else { res.redirect('/login'); } }); app.get('/logout',function(req,res){ req.session.user = null; res.redirect('/login'); });