0

私は、Angular.js、パスポート、connect-ensure-login を使用して、node.js アプリケーションに取り組んでいます。

更新 (F5) でのみ、ensureLoggedIn のリダイレクトが機能しているように見え、ログイン ページに到達します。それ以外の場合は、1 ページ アプリの routeProvider が通常のクリックを引き継ぎ、localhost:3000/usersに到達します。 「/api/users」からの 500 エラーで。

connect-ensure-login (ensureLoggedIn) をダイレクト パスとクリックスルーの両方で機能させるにはどうすればよいですか?

app.get('/users', ensureLoggedIn('/login'))

APIについては、私が使用しています

app.get('/api/users', 
    passport.authenticate('bearer'),
    ...

アプリケーションの routeProvider スニペット:

.config(function($routeProvider, $locationProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'views/home.html'
            })
            ...

参考文献:

https://www.npmjs.org/package/connect-ensure-login

http://passportjs.org/

4

1 に答える 1

1

を利用して、この問題を解決することをお勧めします$httpProvider.interceptors

あなたの場合、500からのエラーをキャッチすることができます(ただし、または/api/usersを返す方がよいでしょう)。401403/login

公式ドキュメントは次のとおりです。

http://docs.angularjs.org/api/ng/service/ $http#interceptors

より具体的な例を次に示します。

http://blog.thesparktree.com/post/75952317665/angularjs-interceptors-globally-handle-401-and-other

そして、ここに同様の答えがあります。

https://stackoverflow.com/a/18764801/115015

于 2014-04-21T03:30:17.987 に答える