Angularクライアントは、ユーザーがパスワードとユーザー名で承認されているかどうかを確認するWeb API関数を呼び出します。ここでは、メソッドの関連開始:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var allowedOrigin = context.OwinContext.Get<string>("as:clientAllowedOrigin");
var userManager = context.OwinContext.Get<DividendsManagerUserManager>();
if (allowedOrigin == null) allowedOrigin = "*";
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin });
var user = await userManager.FindAsync(context.UserName, context.Password);
if (user == null)
{
context.SetError("invalid_grant", "Der Benutzername oder das Passwort ist ungültig.");
return;
}
私が使用するcontext.SetErrorは、提供されたログインが無効な場合に使用します。そうすることで、このメッセージは、フィドラーで見られるように返します。
HTTP/1.1 400 Bad Request
のCache-Control:キャッシュなし プラグマ:キャッシュなし のContent-Type:アプリケーション/ JSON;のcharset = UTF-8 有効期限:-1 サーバー:マイクロソフト-IIS/10.0 アクセス制御 - 許可 - 起源:* X-Poweredのバイ:ASP.NET 日:金、2016年11月18日午前12時49分10秒GMT のContent-Length:97
{"error": "invalid_grant"、 "error_description": "BenutzernameまたはPasswort isungültig"}
いいですね。成功関数コールバックが実行されるので、しかし角度で、APIコールは、 "成功":
var _login = function(loginData) {
var data = "grant_type=password&username=" + loginData.userName + "&password=" + loginData.password + "&client_id=" + authSettings.clientId;
var deferred = $q.defer();
$http.post(serviceBase + 'token', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function(response) {
localStorageService.set('authorizationData', { token: response.access_token, userName: loginData.userName, refreshToken: response.refresh_token, useRefreshTokens: true });
fillAuthData();
deferred.resolve(response);
}).error(function(err, status) {
_logOut();
deferred.reject(err);
});
return deferred.promise;
};
誰もが間違っwents知っていますか?
よろしく、
トルステン
P.S:レスポンスがエラーが含まれている場合、成功の機能の中で私がチェックできます。しかし、それは悪いハックのように感じる。
使用しているanglejsのバージョンはどれですか? –
バージョン1.5.8を使用しています。 – user2145393
'.success(...)。error(...)'の代わりに '.then(...)。catch(...)'を使ってテストできますか?これらのメソッドは、このバージョンのangularjでは非推奨です。 –