【发布时间】:2017-08-19 21:00:27
【问题描述】:
当我的用户通过用户名和密码进行身份验证时,他们会收到一个身份验证令牌,我需要使用此身份验证令牌来授权一些 asp.net WebAPI 调用。为此,我将身份验证令牌存储在浏览器本地存储中,因此这是存储该令牌的最安全方法,并且仍然可以在我的 javascript 代码中访问以进行 API 调用?
【问题讨论】:
标签: authentication asp.net-web-api
当我的用户通过用户名和密码进行身份验证时,他们会收到一个身份验证令牌,我需要使用此身份验证令牌来授权一些 asp.net WebAPI 调用。为此,我将身份验证令牌存储在浏览器本地存储中,因此这是存储该令牌的最安全方法,并且仍然可以在我的 javascript 代码中访问以进行 API 调用?
【问题讨论】:
标签: authentication asp.net-web-api
我会为此目的使用 Cookie 或 HTML5 本地存储。
Cookies 我猜更常见:
JQuery: $.cookie()
只需创建一个 cookie:
$.cookie("MyNewCookie", "Whats inside");
https://github.com/carhartl/jquery-cookie
https://www.electrictoolbox.com/jquery-cookies/
JS: 文档.cookie()
要创建一个新的 cookie:
document.cookie = "NewCookie=TheCookiesValue";
您可以使用https://javascriptexamples.info/code/javascript-get-cookie-name/ 中的此脚本来检索 cookie:
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
}
https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
HTML5 本地存储:
我对这个还不是很了解。但从这里开始:https://www.w3schools.com/html/html5_webstorage.asp
【讨论】:
虽然您可以使用 cookie 或本地存储。出于安全考虑,我希望将令牌保存在应用程序的全局上下文中。
基于 SPA 框架,您可以更优雅地存储它们。比如说,如果您使用的是 Ember.js,您可以使用单例并将令牌注入 ember 数据存储区,从而进行 API 调用或类似的调用。
希望这会有所帮助。
【讨论】: