2016-08-02 13 views
1

私はモバイル開発を初めて行っています。私のプロジェクトはasp.netを使ってビルドされています。認証のために私はそれを構築するUserManager & User.Identityを使用しています。バックエンドWeb APIでのnativescript認証

私は既存のウェブアプリをたくさん持っており、モバイルアプリからそれらを使用したいと考えています。 私は知っている、私は、認証後にWeb APIに秘密のハッシュを渡すことができますが、それは巨大なコードのリファクタリングを伴うでしょう。

&認証をネイティブスクリプト& asp.netで処理する他の方法があるかどうか疑問に思っていました。

このトピックに役立つ資料はありますか?

ご協力いただきありがとうございます。

+1

NativeScript-Angularモジュールを使用していますか?そうであれば、angular2のAuthトピックに従うことは良いスタートとなり、下のGeorgeのようにauthキーを保存することになります。 GitHubの例もご覧ください:https://github.com/NativeScript/nativescript-angular/blob/master/ng-sample/app/examples/router/login-test.ts特に新しいものを使用している場合ルータ。 – Matthew

+0

私の主な問題は、バックアップされたセッションを継続する方法です。 Asp.netは、ログイン後に認証Cookieを戻しています。 @George Edwardsのコメントを使用しようとしています.AppSettingでCookieを保存します。 –

+0

@SimeonGrigorovich私のアプローチはステートレスなものです。セッションを維持する必要はありません。 JWTに有効期限/日付を設定し、有効なjwtを持つリクエストが許可されるだけです。 –

答えて

7

それはあなたのAPIの構造に非常に大きく依存しますが、私はこのようなsomethignをお勧めします:

まずあなたがNativescript Httpモジュールを使用する必要があります。実装は次のようになりますヘッダを返されたHTTP GETコールを取得するには:

http.request({ url: "https://httpbin.org/get", method: "GET" }).then(function (response) { 
    //// Argument (response) is HttpResponse! 
    //for (var header in response.headers) { 
    // console.log(header + ":" + response.headers[header]); 
    //} 
}, function (e) { 
    //// Argument (e) is Error! 
}); 

は、だからあなたのバックエンドは、ヘッダとしてJSONウェブトークンを返すことがあります。この場合、成功コールバックでは、アプリケーションの永続メモリにトークンを格納することをお勧めします。とその後

var tokenValue = appSettings.getString("storedToken"); 
if (tokenValue === undefined { 
    //do API call 
} 

:あなたが格納されている値があるかどうかをチェックすることができ、新たなトークンのためのAPIの呼び出しを行う前に、次に

var appSettings = require("application-settings"); 
appSettings.setString("storedToken", tokenValue); 

:私は次のようになりApplication Settingsモジュールを、使用しますあなたのトークンは、API呼び出しをしたいと思うでしょう。このPOSTおよびヘッダーとしてトークンを追加します。

http.request({ 
    url: "https://httpbin.org/post", 
    method: "POST", 
    headers: { "Content-Type": "application/json", "Auth": tokenValue }, 
    content: JSON.stringify({ MyVariableOne: "ValueOne", MyVariableTwo: "ValueTwo" }) 
}).then(function (response) { 
    // result = response.content.toJSON(); 
    // console.log(result); 
}, function (e) { 
    // console.log("Error occurred " + e); 
}); 

をあなたのバックエンドはAuthヘッダをチェックして、コールを受け入れるか拒否するかを決定するためにJWTを検証する必要があります。

また、さまざまなサービスとしてのバックエンドなど、すばらしいプラグインがいくつかあります。 AzureとFirebase

+0

ありがとうございました。あなたの助けを借りて私はJWTガイドを見つけました:http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2 / –