2016-04-18 18 views
1

URLにヒットするたびにユーザー名とパスワードのポップアップを表示できますが、データベース内の詳細を確認できますが、同じハンドラにリダイレクトしません。それはelseループに詰まっています。 どうすればいいですか?ログインした人物が正しい範囲を持っているかどうかを確認した後、応答データが表示されます。http基本認証の後に同じURLにリダイレクトする方法

マイServer.js -

const simple_validate = function (request, reply, next) { 
var credentials = auth(request); 
if (!credentials || credentials.name !== 'john' || credentials.pass !== 'secret') { 
    reply('Not authorized').code(401); 
    reply().header('WWW-Authenticate', 'Basic realm="example"').hold(); 
    reply('success'); 
} else { 
    next(); 
    reply('Access granted'); 
} 
} 
server.register(Basic, (err) => { 
server.auth.strategy('simple', 'basic', { validateFunc: simple_validate }); 

}); 
+0

あなたは認証のためのガイドは[こちら](http://hapijs.com/tutorials/auth#authentication)自分でhapijs.comのウェブサイトをチェックすると、検証機能は、使用しているものとは異なっています。あなたはそのチュートリアルに従ってみましたか? –

+0

@ simon-p-r何らかの理由で私はいましたが、もう一度試してみましたが、今は正常に動作し始めました。私はそのルートのスコープを設定したので、ユーザが "{" statusCode ":403、" error ":" Forbidden "、" message ":" Insufficient scope " 、のいずれかが期待されて:管理人、スーパー "}"私はそれが私がしたくないユーザー名とパスワードを求めるためにブラウザを閉じる必要があります。リフレッシュすると同じエラーが表示されます。だから私は何をすべきですか??? –

+0

そして、それを指摘してくれてありがとう。 :) –

答えて

0

これはそれを行うための正しい方法です。

const validate = function (request, email, password, callback) { 
    // validate your email and password here 
    User.findUser(email,password,function(err,result){ 
     if(err) 
      callback(null,false); 
     else 
      //do whatever you wanna do 
    }); 
} 

server.register(require('hapi-auth-basic'), (err) => { 
     server.auth.strategy('simple', 'basic', { 
       validateFunc: validateApi 
     }); 
}); 
関連する問題