c# - ASP.NET 网站的 token 身份验证

标签 c# asp.net webforms

我开发了一个带有 cookie 身份验证的 ASP.Net 网站。

在了解 CSRF 攻击后,我决定更改我的网站以使用将保存在客户端的 token 身份验证。

所以我所做的是:

  1. 使用的登录名
  2. 用户收到 token 并将其保存在sessionStorage
  3. 用户在每个 API 请求的 header 中发送 token 。

效果很好。

现在对我来说缺少的一件事是页面加载,这意味着如果用户在登录之前尝试访问页面,它应该将他重定向到登录页面。这显然是我想在页面加载之前做的事情,例如在我在 Site.Master 中加入这段代码之前:

if (!AuthCookieValidator.IsValid(HttpContext.Current))
{
    s_Logger.Info("the user is not authenticated, logging out!");
    Response.Redirect("/Login");
}

但现在我无法实现此逻辑,除非我同时保留基于 session 的 token 和客户端 token 。

这里的解决方案是什么?

最佳答案

所以我的解决方案是这样的:

  1. 用户登录
  2. 用户收到一个token并将其保存在sessionStorage中
  3. 用户在每个 API 请求的 header 中发送 token 。
  4. 如果用户尝试直接访问 url,则在 React 代码开始呈现页面之前,它将发送带有 token 的身份验证检查请求并进行相应呈现。

欢迎对我的方法提出任何意见

关于c# - ASP.NET 网站的 token 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481846/

相关文章:

c# - ActiveX 的 .NET 使用者抛出 TargetParameterCountException

c# - 警告为错误,但不是全部

c# - FormsAuthentication Microst.AspNet.Identity.Owin.SignInManager.to authenticate 之间的区别

asp.net - asp.net中Cache存放的地方

asp.net - 为什么我的 Webform 上的复选框对控制循环代码不可见?

asp.net - 编写 WebForms 或 MVC 以外的 ASP.NET 框架?

c# - 在 PostSharp 中是否可以修改方法的单个参数的值?

c# - 如何从两个表中获取信息并将其添加到单独的表中?

asp.net - 在 ASP.NET MVC 3 中以特定格式验证日期

asp.net-mvc 和 webforms 共存