setUserToken = (res, user) => {
const token = jwt.sign(user, secret);
res.cookie('token', token);
}
router.post('/', passport(authenticate('local'), (req, res, next) => {
setUserToken(res, req.user);
res.redirect('/');
}
// using passport-jwt
const JwtStrategy = require('passport-jwt').Strategy;
const cookieExtractor = (req) => {
const { token } = req.cookies;
return token;
}
const opts = {
secretOrKey: secret,
jwtFromRequest: cookieExtractor,
}
module.exports = new JwtStrategy(opts, (user, done) => {
done(null, user);
});
---
// passport.session()
passport.use(jwt);
app.use((req, res, next) => {
if (!req.cookies.token) {
next();
return;
}
return passport.authenticate('jwt')(req, res, next);
}
+ logout
res.cookie('token', null, {
maxAge: 0
})
const nodemailer = require('nodemailer');
const transport = nodemailer
.createTransport({
service: 'Gmail',
auth: {
user: 'google account',
pass: 'app password',
},
});
const message = {
from: 'login account',
to: 'mail address',
subject: 'title',
text: 'message'
};
transport.sendMail(message, (err, info) => {
if(err) {
console.error('err', err);
return;
}
console.log('ok', info);
});
function generateRandomPassword() {
return ...랜덤 비밀번호 알고리즘
}
router.post('/reset-password', asyncHandler(...) => {
const { email } = req.body;
const randomPassword = generateRandomPassword();
await User.findOneAndUpdate({ email }, {
password: getHash(randomPassword),
});
await sendEmail(email, '...', password);
res.redirect('/');
}));
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const config = {
cliendID: 'clientID',
clientSecret: 'clientSecret',
callbackURL: 'callbackUrl',
};
new GoogleStrategy(config, (accessToken, refreshToken, profile, done) => {
const { email, name } = profile._json;
...
}
passport.use(google);
...
router.get('/google', passport.authenticate('google', {
scope: ['profile', 'email']
}));
router.get('/google/callback', passport.authenticate('google', {
failureRedirect: '/login'
}), (req, res, next) => {
res.redirect('/');
});
한 8주동안 매일 TIL을 적으면서 느낀 것이 있다. 과연 매일 배운 것을 작성하는 것이 가지는 의미가 무엇인가?
1. 강의를 들으며 배운 것을 정리한다.
2. 기록을 남겨 나중에 헷갈리는 부분에서 참고한다.
이 정도일 것 같다. 다만 글을 계속 작성하면서 드는 생각이 수업을 듣고 뒤에 할일이 많을 때면 글을 적는 시간이 너무 길다고 느껴졌고 앞으로는 수업을 들으면서 궁금증이 생긴 부분을 자세히 파보거나 몰랐던 부분을 위주로 작성할 것 같다.