admin管理员组文章数量:1279117
I want the jwt token to expire after 1 minute. But when I run my code it doesn't work.
how can i fix my code?
it's little confused.. i want to expired 1minute later.... I want the jwt token to expire after 1 minute. But when I run my code it doesn't work.
how can i fix my code?
it's little confused.. i want to expired 1minute later....
(auth.js)
const express = require("express");
const passport = require("passport");
const bcrypt = require("bcrypt");
// const User = require("../models/user");
const jwt = require("jsonwebtoken");
const { User, Post, Comment, Image } = require("../models");
const { isLoggedIn, isNotLoggedIn } = require("./middlewares");
const { Op } = require("sequelize");
const router = express.Router();
router.get("/kakao", passport.authenticate("kakao"));
router.get(
"/kakao/callback",
passport.authenticate("kakao", {
session: false,
}),
(req, res, next) => {
const { snsId, provider } = req.user;
const token = jwt.sign({ id: snsId, provider }, "jwt-secret-key", {
expiresIn: 60 * 60,
});
res.redirect(`demo://app?accessToken=${token}`);
}
);
(passport/index.js)
const passport = require("passport");
const { Strategy: LocalStrategy } = require("passport-local");
const { ExtractJwt, Strategy: JWTStrategy } = require("passport-jwt");
const bcrypt = require("bcrypt");
const User = require("../models/user");
const kakao = require("./kakaoStrategy");
const JWTConfig = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
// jwtFromRequest: ExtractJwt.fromHeader("Authorization"),
secretOrKey: "jwt-secret-key",
};
const JWTVerify = async (jwtPayload, done) => {
try {
const user = await User.findOne({ where: { snsId: jwtPayload.id } });
if (user) {
done(null, user);
return;
}
done(null, false, { reason: "올바르지 않은 인증정보 입니다." });
} catch (error) {
console.error(error);
done(error);
}
};
kakao();
module.exports = () => {
passport.use("jwt", new JWTStrategy(JWTConfig, JWTVerify));
};
I want the jwt token to expire after 1 minute. But when I run my code it doesn't work.
how can i fix my code?
it's little confused.. i want to expired 1minute later.... I want the jwt token to expire after 1 minute. But when I run my code it doesn't work.
how can i fix my code?
it's little confused.. i want to expired 1minute later....
(auth.js)
const express = require("express");
const passport = require("passport");
const bcrypt = require("bcrypt");
// const User = require("../models/user");
const jwt = require("jsonwebtoken");
const { User, Post, Comment, Image } = require("../models");
const { isLoggedIn, isNotLoggedIn } = require("./middlewares");
const { Op } = require("sequelize");
const router = express.Router();
router.get("/kakao", passport.authenticate("kakao"));
router.get(
"/kakao/callback",
passport.authenticate("kakao", {
session: false,
}),
(req, res, next) => {
const { snsId, provider } = req.user;
const token = jwt.sign({ id: snsId, provider }, "jwt-secret-key", {
expiresIn: 60 * 60,
});
res.redirect(`demo://app?accessToken=${token}`);
}
);
(passport/index.js)
const passport = require("passport");
const { Strategy: LocalStrategy } = require("passport-local");
const { ExtractJwt, Strategy: JWTStrategy } = require("passport-jwt");
const bcrypt = require("bcrypt");
const User = require("../models/user");
const kakao = require("./kakaoStrategy");
const JWTConfig = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
// jwtFromRequest: ExtractJwt.fromHeader("Authorization"),
secretOrKey: "jwt-secret-key",
};
const JWTVerify = async (jwtPayload, done) => {
try {
const user = await User.findOne({ where: { snsId: jwtPayload.id } });
if (user) {
done(null, user);
return;
}
done(null, false, { reason: "올바르지 않은 인증정보 입니다." });
} catch (error) {
console.error(error);
done(error);
}
};
kakao();
module.exports = () => {
passport.use("jwt", new JWTStrategy(JWTConfig, JWTVerify));
};
Share
Improve this question
edited Apr 17, 2021 at 5:07
user15322469
asked Apr 17, 2021 at 4:57
user15322469user15322469
9093 gold badges14 silver badges36 bronze badges
2
- how are you validating the token? can you add the code here. – RICKY KUMAR Commented Apr 17, 2021 at 4:59
- Which lib are you using? – Vinicius Katata Commented Apr 17, 2021 at 4:59
3 Answers
Reset to default 3var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'secret key',{expiresIn: 1}); // 1 sec
console.log(token);
setTimeout(()=>{
try {
var decoded = jwt.verify(token, 'secret key');
console.log(decoded)
} catch(err) {
console.log('error',err)
}
},2000);
refer https://www.npmjs./package/jsonwebtoken for more details
you can use a string describing a time span
Example
import jwt from "jsonwebtoken"
let token = jwt.sign({ foo: "bar" }, "secret key", { expiresIn: "30m" })
reference
ms('2 days') // 172800000
ms('1d') // 86400000
ms('10h') // 36000000
ms('2.5 hrs') // 9000000
ms('2h') // 7200000
ms('1m') // 60000
ms('5s') // 5000
ms('1y') // 31557600000
ms('100') // 100
ms('-3 days') // -259200000
ms('-1h') // -3600000
ms('-200') // -200
This documentation will give you more information on strings describing a time span. https://github./vercel/ms/blob/master/readme.md
You can replace this
const token = jwt.sign({ id: snsId, provider }, "jwt-secret-key", {
expiresIn: 60 * 60,
});
with this
const iat = Math.floor(Date.now() / 1000)
const exp = iat + 60 // seconds
const token = jwt.sign(
{
id: snsId,
provider,
iat,
exp
},
'jwt-secret-key'
)
本文标签: javascripthow can i setup expiration 30minute in jwt tokenStack Overflow
版权声明:本文标题:javascript - how can i setup expiration 30minute in jwt token - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741301400a2371108.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论