2016-09-24 9 views
1

http-authモジュールを使用して簡単な認証を設定しようとしています。http-authがexpress.staticミドルウェアで動作しないのはなぜですか?

私はこのセットアップを作成しましたが、正しく動作しません。ユーザー/パスのプロンプトを表示するダイアログが表示されますが、ダイアログを閉じてもアプリケーションは動作し続けます。つまり、認証が機能していないようです。

私はこれをセットアップしようとしたために動作していないようです。http-authは私の静的フォルダwwwで動作するようになっています。

私のapp.jsは、this oneに基づいています。ここで

は私の設定です:あなたはhttp://localhost:4000/を参照する場合

'use strict'; 

var express = require('express'); 
var app = express(); 
var auth = require('http-auth'); 

app.use(express.static('www')); 

var basic = auth.basic({ 
    realm: 'SUPER SECRET STUFF' 
}, function(username, password, callback) { 
    callback(username == 'username' && password == 'password'); 
}); 

app.use("/", auth.connect(basic)); 

app.set('port', (process.env.PORT || 4000)); 
app.listen(app.get('port'), function() { 
    console.log('Node app is running on port', app.get('port')); 
}); 
+0

レルムを正しい値に置き換えてください。 – baranskistad

+0

@bjskistad私は混乱しています、正しい価値は何ですか?それは本当に必要ですか?以前と同じようにユーザー/パスを設定する必要があると思った。 –

答えて

1

あなたの例では、完璧に動作代わりにあなたが/ルートに追加できるコンテンツの401メッセージが表示されますがキャンセル打った後(今あなたがルートを持っていませんそのためのハンドラ)。それはあなたがちょうどこのような何かがそれを行います、また、静的ファイルの認証を有効にする必要がある静的ファイルのために動作させるために

:認証ミドルウェアauth.connectに気づくことのよう

'use strict'; 

var express = require('express'); 
var app = express(); 
var auth = require('http-auth'); 

var basic = auth.basic({ 
    realm: 'SUPER SECRET STUFF' 
}, function(username, password, callback) { 
    callback(username == 'username' && password == 'password'); 
}); 

app.use(auth.connect(basic)); 
app.use(express.static('www')); 

app.set('port', (process.env.PORT || 4000)); 
app.listen(app.get('port'), function() { 
    console.log('Node app is running on port', app.get('port')); 
}); 

は静的ファイルミドルウェアの前に宣言する必要がありますexpress.staticと、静的ファイルミドルウェアにはルートプレフィックスがありません。

+0

さて、ここをクリックすると、ページの読み込みが完全にキャンセルされます。あなたの例ではデフォルトルートをどのように追加しますか?私は 'get( '/'、...)'を意味します。私は 'app.use'の後にgetを追加しようとしましたが、今ではユーザー/パスを入力して、ユーザー/パスの入力を依頼し続けます。私は 'http:// localhost:4000'にアクセスし、' www'フォルダからファイルを見たいからです。 –

+0

@OsnyNettoあなたが何をしたいのか分かりません...キャンセルをクリックすると401ページが表示されます(これは認証が成功しなかったことを意味します)。200ステータスが必要な成功ページではなくhttps://en.wikipedia.orgを参照してください。/wiki/List_of_HTTP_status_codes詳細情報 – gevorg

+0

@OsnyNetto '/'経路をパスワードで保護したいのですか?パスワードで保護されているかどうかは静的ファイルが必要ですか? – gevorg

関連する問題