sails-base
Version:
sails1.0+扩展基础包,包含用户体系权限校验及model的attr,action的inputs入参提示语自定义功能
50 lines (45 loc) • 1.42 kB
JavaScript
/**
* @Filename is-logged-in.js
* @Description session校验策略
* @author kenchar (kenchar.lv@gmail.com)
* @date 2019-07-25
*/
module.exports = async function (req, res, proceed) {
if (req.session
&& req.session.authenticated
&& _.has(req.session, 'passport')) {
return proceed();
}
if (!_.isEmpty(req.headers.cookie)) {
//从cookie里获取登录会话信息
let sessionId = sails.session.parseSessionIdFromCookie(req.headers.cookie);
if (!_.isEmpty(sessionId)) {
sails.session.get(sessionId, function (err, session) {
if (_.isNull(session)
|| _.isUndefined(session)
|| _.isUndefined(session.passport)) {
return res.forbidden(new SessionError());
}
req.session.passport = session.passport;
req.session.authenticated = true;
return proceed();
});
} else {
return res.forbidden(new SessionError());
}
} else if (!_.isEmpty(req.headers.token) || !_.isEmpty(req.param('token'))) {
//从token里获取会话信息
let passport = await Passport.findOne({
accessToken: req.headers.token || req.param('token')
});
if (passport) {
req.session.passport = passport;
req.session.authenticated = true;
return proceed();
} else {
return res.forbidden(new SessionError());
}
} else {
return res.forbidden(new SessionError());
}
};