nativescript在后端web api进行身份验证

时间:2016-08-02 11:09:27

标签: asp.net asp.net-mvc authentication angular nativescript

我是移动开发的新手。我的项目是使用asp.net构建的。对于身份验证我正在使用构建它UserManager& User.Identity。

我有一堆现有的网络api,我希望从移动应用程序中使用它们。 我知道,我可以在验证后将秘密哈希传递给web api,但这将涉及巨大的代码重构。

我一直想知道是否有其他方法来处理身份验证和授权与nativescript& asp.net。

您是否知道此主题的任何有用资源?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:8)

这在很大程度上取决于你的API结构,但我会推荐这样的东西:

首先,您需要使用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 Web令牌作为标头返回。在成功回调的情况下,您可能希望将令牌存储在应用程序持久性内存中。我会使用Application Settings模块,它看起来像:

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

然后,在为新令牌进行API调用之前,您可以检查是否存在存储值:

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

然后使用您的令牌,您可以进行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