Intereting Posts
Создание лазурной виртуальной машины из изображения с помощью SDK узла Правильный способ вставки многих записей в Mongodb с помощью Node.js RequireJS ищет app.app вместо app.js (где app.js – это точка входа, указанная в основной базе данных) LoopbackJS: HasAndBelongsToMany, как запросить / фильтровать по свойству отношения? Как удалить Redis на прослушивание сообщения Bender.js: команда «bender server run» открывает файл конфигурации bender.js в каталоге вместо запуска сервера bender.js Webpack Express не может разрешить модуль «fs», зависимость запроса – выражение socket.io не работает с транспортом: Загрузка файла в хранилище файлов Azure с помощью node.js «Обратное» регулярное выражение с JavaScript (node.js) Рекомендуемый способ удаления объекта в MongoDB на основе маршрута Функция облака: имя HTTP-запроса и объекты изображения не определены flashsocket на socketio и nodejs не работает Почему я получаю сообщение об ошибке «Попытка открыть закрытое соединение»? Результаты возврата mongoose в поиске запроса к переменной

Магистраль, узел, проверка сеанса, мой метод работает, но скажите, правильно это или нет.

Я использовал это в начале:

var app = express.createServer( express.cookieParser(), express.session({ secret: 'somesecretword' }) ); 

Ниже код представляет собой пример кода, чтобы получить данные пользователя с uname как ключ.

Я вызываю этот код из URL-адреса базовой модели, вызывая model.fetch ().

 app.get('/user/:uname/', function (req, res) { var uname=req.params.uname; if(!req.session.user) // check if logged in res.send("Not Logged In"); return UserModel.find({uname : uname},function(err, user) { if (!err) { return res.send(user); } else { return res.send(err); } }); }); 

Итак, здесь я написал код для проверки сеанса непосредственно в приведенном выше методе get.

Что делать, если у меня много таких методов? Должен ли я писать одно и то же в каждом методе, или есть какой-нибудь controller в узле, который выполняет эту работу?

Например, покажите мне controller, который проверяет пути «/ user», означает, что «/ user / anythinghere /» должен быть проверен автоматически или показать мне другой лучший способ.

То, что вам нужно, – это какое-то промежуточное программное обеспечение для передачи с помощью метода app.get. Я не могу точно переписать ваш блок кода, поскольку я все еще изучаю Node.js, как бы это ни было из документации Express (немного изменилось, чтобы попытаться удовлетворить ваши потребности)

 function requireAuth(req, res, next) { if(req.session.user) { next(); } else { next(new Error('Failed to load user ' + req.params.id)); } } app.get('/user/edit/:id', requireAuth, function(req, res){ res.send('you can see this because you are authed'); }); app.get('/', function(req, res){ res.send('Not requiring auth on homepage'); }); 

Документация здесь объясняет это лучше, чем я могу:

http://expressjs.com/guide.html#route-middleware

Надеюсь, это может помочь. 🙂 Во всяком случае, я сам только что узнал что-то новое, ответив на это, так что спасибо: D

Вы можете использовать промежуточное ПО и поместить его в такой маршрут:

 app.get('/user/edit/:id', requireAuth, function(req, res){ res.send('you can see this because you are authed'); }); 

или что я делаю, это что-то вроде этого с помощью подстановочного знака:

 app.all("/api/private*", ensureAuthenticated); 

Вы можете прочитать больше об этом здесь: https://fabianosoriani.wordpress.com/2011/08/15/express-api-on-node-js-with-mysql-auth/