我有一个自定义登录,它返回一个加密的令牌,表示用户已登录。此令牌通过 QueryString 传递到另一个页面(Dash.aspx)。
Dash.aspx 从 QueryString 中获取令牌并将其发布到页面上的隐藏字段。Javascript 读取该值并将其保存在内存中。然后使用该令牌进行 Web 服务调用。当这些调用完成时,会返回一个新的 Token 值,并且 javascript 会存储该值(替换旧值)。
我想在登录后添加新页面以供访问。这些页面需要传递给它们的有效令牌。用户会从 Dash.aspx 移动到这些新页面之一并返回(因此母版页顶部只有几个不同的链接)
我不喜欢通过 QueryString 传递令牌。而且我不确定如何在页面更改可访问的地方更新令牌。如果可能的话,我想避免使用 Session 来存储和传递令牌
如何更谨慎地传递我的令牌并确保它始终传递最新的值?
我意识到这是一个相当广泛的问题,但我不知所措。我觉得可能有一些预先构建的想法可以处理这个问题,我只是不知道什么或如何使用它。
谢谢
更新
因此,要求提供一个示例:
第一步:用户登录->zholen/zholen123
- 调用服务来验证用户名和密码 -> 返回 Token ('ABC')
- 重定向到页面 Dash.aspx?token=ABC
第 2 步:Dash.aspx 从查询字符串中获取令牌并分配给页面上的隐藏字段
- Javascript 对象从隐藏字段中获取令牌并在内部存储
- JS 对象对各种服务进行多次异步调用,每个服务返回一个新的更新令牌,内部令牌更新为新值(令牌每 30 分钟过期)
期望的新步骤
第 3 步:从 Dash.aspx 移动到 Account.aspx
- Account.aspx 需要有效的令牌才能加载
- 调用更多服务并更改Token
第 4 步:使用最新令牌从 Account 移动到 Dash.aspx
服务调用是通过 Web 服务 (asmx) 或通过页面方法进行的,具体取决于操作是否需要数据返回 (asmx) 或 html 返回(页面方法 -> 预填充数据的表)或页面加载
根据 Cookies 的建议,我认为可以在 C# 端的这些调用期间用新的令牌值重置 cookie,假设我可以从 ASMX 做那种事情并且整个事情的异步不会'不会引起问题。
此外,我可以使内部存储最新令牌的 JS 对象将该值放回隐藏字段,如果这有助于使其从 C# 端可访问。