2016-10-21 11 views
2

OAuth/Owinを使用して認証を処理するWeb APIプロジェクトがあります。Owin OAuthコンテキスト:Frontend login send Json

私はform-urlencodedを介して投稿するとすべてうまくいきます。しかしフロントエンドのチームはアプリケーション/ jsonを投稿し、私はこのJsonを受け取る方法を変更することができませんでした。

私は通常、[FromBody]を使用してJsonを受信しますが、今回は動作しませんでした。

マイコード:

public override async Task ValidateClientAuthentication([FromBody]OAuthValidateClientAuthenticationContext context) 
    { 
     context.Validated(); 
    } 

    public override async Task GrantResourceOwnerCredentials([FromBody]OAuthGrantResourceOwnerCredentialsContext context) 
    { 
     try 
     { 
      .... 
     } 
     catch (Exception e) 
     { 
      context.SetError("invalid_grant", "User not found"); 
     } 
    } 
} 

マイOAuthの設定:

 public static void ConfigureOAuth(IAppBuilder app, IContainer container) 
    { 
     OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
     { 
      AllowInsecureHttp = true, // HTTPS == false 
      TokenEndpointPath = new PathString("/security/login"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromHours(2), 
      Provider = container.Resolve<IOAuthAuthorizationServerProvider>()     
     }; 

     app.UseOAuthAuthorizationServer(OAuthServerOptions); 
     app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 
    } 

JSON例:

{grant_type: "パスワード"、ユーザ名: " myuser "、パスワード:ここから

context.Request.Body.Position = 0; // this resets the read position to 0 
var payload = await new StreamReader(context.Request.Body).ReadToEndAsync(); 

による "MYPASS"}リクエストボディで

+0

jsonフォームリクエストを読むことができます。 動的obj = Request.Content.ReadAsAsyncを待ちます(); – Eins

答えて

0

読むあなたはJSONオブジェクトの文字列を持っています。デシリアライザを使用して、デシリアライザをCLRタイプに変換できます。

関連する問題