は私がdefaultSuccessUrl()とfailureUrl()が実行された結論、関連ページロードを得たが、NG-ルート/ $場所でAngularjsフロントエンドで無視された春3.2
.formLogin()
.loginPage("/login.html")
.usernameParameter("username").passwordParameter("password")
.loginProcessingUrl("/perform_login")
.defaultSuccessUrl("/welcome", false)
.failureUrl("/notexistpage")
と、次のセキュリティコンフィグを持っています。
私はindex.htmlの上で単一ページのアプリケーションを持っているが、以下のNG-ビューブロックを持っている、それは基本的には、ログインボタンを押して、ブートストラップナビゲーションパネルです:
<li class="nav-item" ng-show="!authenticated">
<a class="nav-link active" id="login-tab" data-toggle="tab" role="tab" aria-controls="login" aria-expanded="true" href="#!/login">Login</a>
</li>
<div ng-view class="container"></div>
ログインページがNGに表示されます次のJavaScript関数にフォームを送信-viewブロック、およびIきngのクリック()関数:
$http({
method: 'POST',
url: 'perform_login',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
data: credentials
}).then(function (response) {
$rootScope.authenticated = true;
callback && callback();
}, function (response) {
$rootScope.authenticated = false;
callback && callback();
});
ページには、/ログインに失敗し、成功に応じて、異なる動作をしますが、それにもかかわらず、200のステータスコードを返します/ 302/304、これはjavascriptが成功とみなしたものです。また、ログインフォームはブロック内に残り、Java Success Handlerは無視されます。ページはdefaultSuccessUrl()で定義されたhtmlを要求しましたが、ページに表示されませんでした。
ログイン成功後(javascriptの最初のコールバック)に$ location.path( "/")のみをハードコードし、任意のページにアクセスする前にユーザーにログインさせることができます。
これを修正できましたか?私は同じ問題に直面しています。 – Med