c# - 使用准无服务器 Web 架构(AJAX 模板魔法)确保安全 "private site areas"

标签 c# javascript asp.net asp.net-mvc ajax

首先,抱歉,如果我的英语听起来不太好,我会尽量说得清楚。 我计划开发一个具有以下架构的网站:

为客户端提供静态页面,使用 JavaScript 模板和 ajax 加载内容,内容将通过 ASP.NET MVC 应用程序提供,该应用程序将 json 结果发送到客户端页面。

我的问题相当简单:我可以使用什么方法向我的网站用户提供私有(private)区域?

我想到的唯一一件事是提供一个登录页面,将登录信息(加密)发送到服务器(通过ajax)。然后服务器返回一个 token 以存储为cookie。对于以下每次通过 ajax 对服务器的调用(现在说到私有(private)区域), token 也应该被发送、检查,并且应该提供正确的内容结果。

我怎样才能实现这个东西?有哪些安全和隐私问题?

顺便说一下,我在服务器中使用 C#,使用 JQuery 进行简单的 ajax 管理,使用 Jquery.LoadJSON 进行内容加载。 Mustache 为 javascript 提供诸如部分等之类的东西。我正在寻找一些可以让我以简单明了的方式管理 cookie 的东西,欢迎提出建议。

非常感谢!

最佳答案

您实际上可以使用内置的 ASP.NET 身份验证机制:

  • 允许匿名访问您的所有页面(假设这是要求)。
  • 在 java 脚本(客户端)中维护一个变量来告知用户是否已通过身份验证。
  • 要访问任何安全内容/区域,请调用通用 js 函数,该函数将查看当前用户是否已通过身份验证,如果未通过身份验证,则执行适当的操作来对用户进行身份验证。
  • 如果它是基于表单的身份验证,那么您的函数应使用模式对话框提示用户输入凭据,然后通过 ajax 调用将这些凭据传递给服务器。在服务器端,您应该验证凭据并使用 FormsAuthentication.SetAuthCookie指示 ASP.NET 运行时身份验证成功。运行时将维护 auth cookie(这样您就不必自己管理 token )
  • 对于服务于服务器端安全内容的任何 ajax 调用,该调用必须检查当前用户是否经过身份验证(使用 HttpContext.Current.User.Identity.IsAuthenticated )。如果没有,您可以重定向到错误页面或发出 401 响应代码(推荐用于 Windows 身份验证方案)。您可以在 AJAX 调用中为经过身份验证的用户添加任何授权方案。

关于c# - 使用准无服务器 Web 架构(AJAX 模板魔法)确保安全 "private site areas",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6182757/

相关文章:

c# - 多个arraylist重复subjectname顺序显示

javascript - 为 AngularJs 服务的 ASP.NET MVC Controller 自动创建 "proxy"

Javascript if 语句失败

javascript - 如何更改表单域中的 Action 属性? HTML

c# - 创建新实例或仅设置内部变量

javascript - 可以使浏览器不删除字符

javascript - 如何在限制行长度的angularjs中显示多行

c# - 发布请求正文太大(参数对象中的字符串太大)

c# - 我的 C# Reg-ex 正确吗?

c# - 使用 LINQ 在两个表之间选择不同的值