2017-02-18 19 views
0

Feathersを使用してアプリを作成しました。私はこのアプリをしばらく使っています。それは、ブログや他のいくつかのWebページを正常にホストします。しかし、私は今、私のルートのいくつかを保護する必要があるという点に達しました。たとえば、私は管理活動(/ admin)のルートを持っていたいと思いますが、特定のユーザーにアクセス権を与えたいだけです。フェザー - 認証と認証

私はauthenticationと認証コンポーネントを使用する必要があることを知っています。しかし、現時点では、私は承認に固執しています。私の目標は、Google経由でOAuthを使用して認証することです。しかし、私の認証の挑戦を乗り越えるためには、ちょうど/adminルートをロックダウンする(いいえ、それは配備されていません)ためにハードコードされたユーザー名/パスワードを使用するだけでうれしいです。

瞬間、私は

const app = feathers(); 
const routes = require('./routes'); 

app.configure(configuration(path.join(__dirname, '..'))); 

app.use(compress()) 
    .options('*', cors()) 
    .use(cors()) 
    .use(favicon(path.join(app.get('public'), 'favicon.ico'))) 
    .use('/public', serveStatic(app.get('public'), staticFileSettings)) 
    .use(bodyParser.json()) 
    .use(bodyParser.urlencoded({ extended: true })) 
    .configure(routes)  
    .configure(hooks()) 
    .configure(rest()) 
    .configure(socketio()) 
    .configure(services) 
    .configure(middleware) 
    .configure(authentication()) 
; 

// Setup the authentication strategy. 
app.authenticate({ 
    type: 'local', 
    'email': '[email protected]', 
    'password': 'admin' 
}).then(function(result){ 
    console.log('Authenticated!', result); 
}).catch(function(error){ 
    console.error('Error authenticating!', error); 
}); 

を持っている私の問題は、私は私のアプリを起動したとき、私はエラーを取得し、できるだけ早く私はapp.authenticateもので、コードのブロックを追加すると、です。エラーは言う:

TypeError: app.authenticate is not a function 

私が削除した場合app.authenticate(...);マイアプリは罰金開始しますが、何がロックダウンされていません。私の./routes/index.jsファイルでは、私が持っている:

うまくレンダリングし、
app.use('/admin', function(req, res) { 
    res.render('admin/index.html', {}); 
});  

。それは、認証された許可されたユーザーに限られていません。私は何が欠けていますか?裸の最小化で、私はapp.authenticateエラーを回避する方法を理解しようとしています。

+0

何をしようとしていますか? 'app.authenticate'はクライアント(' feathers-authentication/client')でのみ利用可能です。 – Daff

+0

最終的に、権限のないユーザーが '/ admin'ルート上のビューにアクセスしないようにしようとしています。私の理解から、1)ユーザーを認証する(私はGoogleのOAuthログインを使用したい)、2)ユーザーを認証するという2つのことが必要です。上の質問は、私が#1にいかに執着しているかを説明しています。 – Gary

答えて

0

許可されていないアクセスからルートを保護するには、feathers generate authenticationをインストールしたときにインストールされたfeathers-authenticationパッケージによって提供されるfollow the documented usage of express middlewareが必要です。

次に、/adminルートを認証する例を示します。

const auth = require('feathers-authentication'); 

app.use(
    '/admin', 
    auth.express.authenticate('jwt'), // <-- this is a strategy, can local/jwt... etc 
    (req, res, next) => { 
    console.log("Request for '/admin'..."); 
    res.render('admin'); 
    } 
);