我们有一个带有Web API后端的MVC / AngularJS系统,它使用Azure ACS和AAD来验证我们的用户。身份验证效果很好,当用户首次对来自ACS的声明进行身份验证时,会在令牌中传入。
我们覆盖ClaimsPrincipal Authenticate
方法并验证此用户是否为我们系统的用户,并在此处添加角色声明。
在此之后,用户被引导到主页,并且该过程的下一步骤要求用户从列表中选择项目(例如,他们的当前位置)。
此选项确定在Web应用程序中应用某些设置的方式。当用户进行此选择时,我们对Web Api后端进行ajax调用,此处我们向令牌添加另外三个声明,反映用户的选择。
现在,如果在完成此选择后刷新页面,则整个过程将再次启动,但不同浏览器的行为会有所不同。
对于Chrome和Opera,再次调用'ClaimsPrincipal Authenticate',再次添加角色,用户需要再次进行选择以添加三个声明(即在我们的代码之前刷新页面的副本时)修改它使用)。
对于Firefox和IE,刷新会传递一个令牌,其中包含我们以编程方式添加的所有声明,因此它不会将令牌恢复为初始状态。
后者的行为是我所期望的和我更喜欢的。有没有关于此的文档,对于Chrome和Opera有没有办法确保刷新页面时使用当前令牌?