我的申请结构如下 -
https://democompany.com/
https://democompany.com/app1
https://democompany.com/api
用户登录主网站网址https://democompany.com/logon.aspx,这是一个asp.net webforms应用程序。
app1应用程序是一个使用/ api app的angularjs应用程序。 api是webapi2应用程序,它使用oauth令牌进行身份验证。我希望用户只能在democompany.com/logon.aspx上登录一次,并将oauth令牌传递给angularjs应用程序。
是否建议将oauth令牌从一个应用程序传递到另一个应用程序。
答案 0 :(得分:4)
只要您的应用程序使用一个子域,就可以使用客户端window.localStorage来实现此目的。
// to set token in storage
window.localStorage.setItem('access_token', access_token);
// to get token from storage
access_token = window.localStorage.getItem('access_token');
因此,您可以使用一些javascript代码从每个页面访问该存储。例如,使用angular + web.api的组合,您可以在$ http服务中为所有请求设置令牌:
$http.defaults.headers.common['Authorization'] = "Bearer " + token;
如果您希望更好地控制代码,也可以使用interceptor
来设置令牌。