1
express에서 CSRF 토큰을 생성하려고합니다. 나는 관련 질의를 확인했고 그들 중 누구도 나를 도와주는 것 같지 않습니다. 나는csrf (익스프레스 + 노드)를 사용할 때 금지 된 액세스
var app = express();
var connect = require('connect');
// Disable CSRF for some requests
var conditionalCSRF = function (req, res, next) {
var whitelist = ['/login'];
if (req.method !== 'POST') {
next();
return;
}
if (whitelist.indexOf(req.url) !== -1) {
next();
} else {
//req.session._csrf || (req.session._csrf = connect.utils.uid(24));
(express.csrf())(req, res, next);
}
};
app.configure(function() {
app.use(passport.initialize());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(passport.session());
app.use(express.session({
secret: 'applecake',
key: 'sid',
cookie : {
maxAge : 604800,
path:"/"
}
}));
app.use(conditionalCSRF);
app.use(app.router);
app.use(express.errorHandler());
});
내 폼이 나는이/URI에 로그인하여 로그인이
<form action="http://localhost:3000/conversationlist" method="post">
<div>
<input type="hidden" name="_csrf" value=token />
</div>
<div>
<input type="submit" value="Get ConversationList"/>
</div>
같은 간단한 형태로 내 app.js에 아래의 코드를 가지고 그것은하지 않은 잘 작동 CSRF 보호의 일부. 나는 다른 URI,
를 시도하면 나는 CSRF 토큰 설정되는 표시되지도 나는 금지 된 메시지
Express
403 Error: Forbidden
at Object.exports.error (C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\lib\utils.js:63:13)
at createToken (C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\lib\middleware\csrf.js:82:55)
at C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\lib\middleware\csrf.js:54:7
at Object.ondone (C:\Career\Node.JS\ExpressCHLogging\node_modules\express\node_modules\connect\node_modules\uid2\index.js:46:8)
에게 내가 액세스 금지받을 이유는 어떤 생각을받을 수 있습니다.
토큰을보기에 전달하는 방법을 보여주는 경로 처리기를 게시 할 수 있습니까? – juanpaco
app.post ('/ conversationlist', 인증 된 함수, req, res) { \t conversationlist.start (req, res, req.session.cn); }}); 이것은 제가 시도하고있는 URL에 대한 것입니다. 인증을 위해 나는 여권을 사용하며/login 중에 호출됩니다. – user2731628
특히''토큰은 어디에서 왔습니까? 당신이 그것을 넘겨 준 어딘가에서'res.render' 콜을 가지고 있습니까? – juanpaco