|
|
@@ -3,6 +3,12 @@ var debug = require('debug')('crowi:lib:middlewares');
|
|
|
exports.loginChecker = function(crowi, app) {
|
|
|
return function(req, res, next) {
|
|
|
var User = crowi.model('User');
|
|
|
+ var csrfKey = (req.session && req.session.id) || 'anon';
|
|
|
+
|
|
|
+ if (req.csrfToken === null) {
|
|
|
+ debug('csrfKey', csrfKey);
|
|
|
+ req.csrfToken = crowi.getTokens().create(csrfKey);
|
|
|
+ }
|
|
|
|
|
|
// session に user object が入ってる
|
|
|
if (req.session.user && '_id' in req.session.user) {
|
|
|
@@ -26,11 +32,13 @@ exports.loginChecker = function(crowi, app) {
|
|
|
exports.csrfVerify = function(crowi, app) {
|
|
|
return function(req, res, next) {
|
|
|
var token = req.body._csrf || req.query._csrf || null;
|
|
|
+ var csrfKey = (req.session && req.session.id) || 'anon';
|
|
|
+
|
|
|
if (req.skipCsrfVerify) {
|
|
|
return next();
|
|
|
}
|
|
|
|
|
|
- if (crowi.getTokens().verify(crowi.getCsrfSecret(), token)) {
|
|
|
+ if (crowi.getTokens().verify(csrfKey, token)) {
|
|
|
return next();
|
|
|
}
|
|
|
|