2017-02-14 2 views
0

Я переношу старый проект sails.js, который был написан с 0.10.5 по 0.12.x. Поскольку исходный код был написан давно и может иметь некоторый «несоответствующий» код, я решил перестроить проект, начав новый проект парусов и медленно мигрируя модели/контроллеры/службы, сохраняя при этом только необходимые политики и файлы конфигурации.Миграция в Sails.js 0.12 - миграция промежуточного программного обеспечения

До сих пор мне удалось получить проект поднять, и теперь я начинаю разбираться с аутентификацией. В идеале я намерен перейти к использованию паспорта с jwt для замены существующего экспресс-jwt.

Мой старый конфиг/http.js выглядит так:

module.exports.http = { 
    bodyParser: function() { 
     //return require('body-parser')({limit: '900mb'}); 
     var opts = { limit:'50mb' }; 
     var fn; 

     // Default to built-in bodyParser: 
     fn = require('skipper'); 
     return fn(opts); 
    }, 
    customMiddleware: function(app) { 

     var bodyParser = require('body-parser'); 
     var expressJwt = require('../libs/express-jwt'); 
     var experssJwtConfig = require('./jwt.js').jwt; 

     app.use(function(req, res, next) { 
      res.setHeader("Access-Control-Allow-Origin", "*"); 
      next(); 
     }); 

     app.use('/api', expressJwt({secret: experssJwtConfig.secret})); 

     app.use(bodyParser.json()); 
     app.use(bodyParser.urlencoded()); 

     if(process.env.NODE_ENV == 'development') { 
      // just for local/development - serve static files  
     } 
    } 
} 

Если я правильно понимаю (я не очень хорошо разбираются в стеке) этот код отменяет парсер тело по умолчанию (с помощью шкипера, позволяющий большие файлы - это указано в bodyParser), а кроме того, изменяет промежуточное программное обеспечение используется:

  • включает в себя промежуточное программное обеспечение, чтобы добавить Access-Control-Allow-Origin.

  • Для маршрутов под «api» он вызывает промежуточное программное обеспечение express-jwt, которое в этой реализации (не уверен, что это поведение по умолчанию) ищет токен, а затем добавляет пользователя к объекту запроса (который затем используется в большинстве контроллеров).

  • Добавляет блок синтаксического анализатора (body-parser) json и urlencode к цепи промежуточного программного обеспечения.

Мой вопрос здесь в том, следует ли мне сохранять его более или менее одинаковым или изменить его? Существуют ли очевидные анти-шаблоны или риски безопасности? Если я использую шкипера, мне нужен компонент синтаксического анализатора json/urlencode?

Смогу ли я достичь сопоставимых потоков с использованием более стандартного паспортного/jwt-кода? Если да, могу ли я достичь такого типа стека с sails-auth, или я должен сыграть свою роль?

ответ

1

Да, вы можете удалить специализированное промежуточное программное обеспечение. Последний шаблон проще в управлении. Для начала,

  • Access-Control-Allow-Origin может быть установлен в config/cors.js

  • Вы можете использовать passport-jwt в более sailsy способом путем использования sails-auth модуля. И разделим логику на services, используя policies для управления потоком и т. Д. Проблема с sails-auth заключается в том, что модуль в npm был опубликован более года назад. У него несколько ошибок. Репо GitHub имеет стабильную версию.

Я создал минимальный сервер аутентификации в парусах, который вы можете расширить для различных паспортных стратегий. Сервер поддерживает local, bearer, JWT стратегии из коробки.

Sails Auth Server

+0

Вау, это довольно комплексный пример - мне понадобится некоторое время, чтобы разобраться в ней :-). Я не вижу паруса-auth в package.js, вы использовали его? Из краткого обзора я не уверен, как паспорт подключен ... Есть ли какой-нибудь ресурс, который может помочь понять, как все это работает вместе? –

+0

'UserController.js',' AuthController.js', 'Services/passport.js',' Сервисы/протоколы' являются файлами sails-auth. Поскольку модуль в npm устарел, мне пришлось добавить его непосредственно в проект. Я могу обновить Readme, если это поможет. – MjZac

+0

Я действительно пробовал использовать sails-auth, но, похоже, никаких изменений не внес. Если вы можете добавить к readme инструкции по установке вручную или некоторую дополнительную практическую информацию, которая будет отличной ... –

Смежные вопросы