Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- gcc regex
- c3 step graph
- InfluxDB
- 1697
- snmp test
- subporcess path
- grafana dashboard
- 정규식 활용
- python popen
- centos pyhon 설치
- gcc 업데이트
- 백준
- c3 축 가리기
- telegraf
- c++ 정규식
- 정규식 문자열 출력
- influxdb 설치
- selinux port 등록
- c3 second
- linux시간으로 변경
- c3 초
- 정규식 컴파일
- semanage
- c3 축 없애기
- CentOS7
- regex_search
- g++ 업데이트
- python os
- python subprocess
- snmp
Archives
- Today
- Total
리셋 되지 말자
[NodeJS] Passport 인증 구현 및 자격 확인 본문
Passport 미들웨어는 session을 이용하므로, 반드시 session 미들웨어를 use하고난 뒤에 use 하여아 한다.
사용 방법
두 가지 사용방법이 있다.
자격확인
app.post('/auth/login_process',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/auth/login' }
));
auth 라우터의 login_process를 주석처리한 뒤, main.js에 위의 코드를 추가한다. 성공하면 루트페이지, 실패하면 다시 로그인 페이지로 보내는 코드이다.
원래의 코드는 authData와 if문을 통해 로그인 여부를 결정했는데 그런 부분이 없다.
(www.passportjs.org/docs/configure/)에서 사용 법을 확인할 수 있다.
- 코드 테스트
app.post('/auth/login_process',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/auth/login' }
));
passport.use(new LocalStrategy(
function(username, password, done) {
// User.findOne({ username: username }, function (err, user) {
// if (err) { return done(err); }
// if (!user) {
// return done(null, false, { message: 'Incorrect username.' });
// }
// if (!user.validPassword(password)) {
// return done(null, false, { message: 'Incorrect password.' });
// }
// return done(null, user);
// });
}
));
예제를 주석처리하고 웹서버를 실행한뒤 로그인을 시도하면 /auth/login 페이지에 계속 머물러 있다. 즉 'failureRedirect'가 동작하는 것이다.
- Form
Form을 검색하면, form 데이터 전송 시에 name은 username과 password로 전송하도록 되어있다.
이 name 이름들을 이용하기 싫다면 아래처럼 default값을 변경할 수도 있다.
- app.use(new LocalStrategy) 수정
passport.use(new LocalStrategy(
{
usernameField: 'email',
passwordField: 'pwd'
},
function(username, password, done) {
console.log('LocalStrategy', username, password);
// User.findOne({ username: username }, function (err, user) {
// if (err) { return done(err); }
// if (!user) {
// return done(null, false, { message: 'Incorrect username.' });
// }
// if (!user.validPassword(password)) {
// return done(null, false, { message: 'Incorrect password.' });
// }
// return done(null, user);
// });
}
));
기존에 사용하던 email과 pwd 값으로 전송이 잘 되는지 확인해본다.
LocalStrategy rudwns273@naver.com 111111
결과는 위에처럼, 입력한 값이 잘 출력된다.
인증 기능 구현
main.js에 authData를 선언하고, 아래와 같이 코드를 작성한다
passport.use(new LocalStrategy(
{
usernameField: 'email',
passwordField: 'pwd'
},
function (username, password, done) {
const authData = {
email:'rudwns273@naver.com',
password:'12345'
}
console.log(username, password);
if(username==authData.email){
if(password==authData.password){
console.log(1);
done(null, authData);
}else{
return done(null, false, {
message: 'Incorrect password.'
});
}
}else{
return done(null, false, {
message: 'Incorrect username.'
});
}
}
));
테스트를 해본다.
1이 출력됐으므로 우선은 성공이다. 이제 세션과 연동하여야 한다.
'NodeJS > 생활코딩' 카테고리의 다른 글
[NodeJS] Passport 로그인 확인 (0) | 2020.10.05 |
---|---|
[NodeJS] Passport 세션이용 (0) | 2020.09.28 |
[NodeJS] Passport 설치 (0) | 2020.09.28 |
[express] session 추가사항 (0) | 2020.09.28 |
[express] session & auth 인증 구현 (0) | 2020.09.27 |
Comments