Keycloak是一個用Java編寫的開源認證和身份管理解決方案。它提供了一個nodejs適配器,我可以使用它來成功與express進行集成。這裏是路線文件,它的工作原理:無法將Keycloak與Sails整合。能夠將Keycloak與Express集成
'use strict';
module.exports = function(app) {
var Keycloak = require('keycloak-connect');
var session = require('express-session');
var memoryStore = new session.MemoryStore();
app.use(session({
secret: 'mySecret',
resave: false,
saveUninitialized: true,
store: memoryStore
}));
var keycloak = new Keycloak({
store: memoryStore
});
app.use(keycloak.middleware({
logout: '/logout',
admin: '/'
}));
// var lRController = require('../controllers/LRController');
//
// app.route('/lrs').get(lRController.list_all_lrs).post(lRController.create_a_lr);
var DeliveryOrderController = require('../controllers/DeliveryOrderController');
app.route('/').get(keycloak.protect(), DeliveryOrderController.getAllDos)
app.route('/api/dos').get(keycloak.protect(), DeliveryOrderController.getAllDos).post(DeliveryOrderController.createDo);
app.route('/api/do').put(DeliveryOrderController.updateDo);
app.route('/api/do/:doNumber').get(DeliveryOrderController.getDoByDoNumber);
app.route('/api/do/location/:locationId').get(DeliveryOrderController.getDoByLocation);
app.route('/api/do/branch/:branchId').get(DeliveryOrderController.getDoByBranch);
app.route('/api/do').delete(DeliveryOrderController.deleteDo);
var TransportDeliveryOrderController = require('../controllers/TransportDeliveryOrderController');
app.route('/api/tdos').get(TransportDeliveryOrderController.getAllTdos).post(TransportDeliveryOrderController.createTdo);
app.route('/api/tdo').put(TransportDeliveryOrderController.updateTdo);
app.route('/api/tdo/:tdoNumber').get(TransportDeliveryOrderController.getTdoByTdoNumber);
app.route('/api/tdo/status/:status').get(TransportDeliveryOrderController.getTdoByStatus);
app.route('/api/tdo/status/:status/do/:doNumber').get(TransportDeliveryOrderController.getTdoByStatusAndDo);
};
正如你可以在交貨單的路線看,我有keycloak.protect()
保護的兩條路線(同一線路的複印件)。我正在嘗試在帆中做同樣的事情。爲此我有以下問題。
a。爲了keycloak融入明示下列事情做是爲了保護路由
要求Keycloak和快速會話:
var Keycloak = require('keycloak-connect');
var session = require('express-session');
定義的存儲器存儲中存儲會話:
var memoryStore = new session.MemoryStore();
包括快速
會話中間件
app.use(session({ secret: 'mySecret', resave: false, saveUninitialized: true, store: memoryStore }));
啓動Keycloak:
var keycloak = new Keycloak({ store: memoryStore });
包括keycloak中間件到快遞中間件:
app.use(keycloak.middleware({ logout: '/logout', admin: '/' }));
保護利用
keycloak.protect()
app.route('/api/dos').get(keycloak.protect(),DeliveryOrderController.getAllDos).post(DeliveryOrderController.createDo);
我需要建立在船帆類似步驟的路線。我如何在帆中做這些事情?
我假設http.js是我添加中間件的地方。如果我這樣做,如何訪問routes.js中的keycloak以使用keycloak.protect()。
比如我可以通過以下方式添加的保護功能:
'/foo': [
keycloak.protect(),
{ controller: 'user', action: 'find' }
]
這裏是適配器的NodeJS爲keycloak - https://github.com/keycloak/keycloak-nodejs-connect
還要說明一點之前展開:可能您在中間件列表進行迭代,並且有帆調用一個函數的函數。這可以包含在keycloak連接庫中。 – nswartz