使用准无服务器Web架构(“ AJAX模板魔术”)创建安全的“专用站点区域” - c#

首先,对不起,如果我的英语听起来不太好,我会尽量保持清晰。
我打算开发一个具有以下架构的网站:

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

我的问题很简单:我可以使用哪些方法为网站用户提供私有区域?

我唯一想到的是提供一个登录页面,该页面将登录信息(加密)发送到服务器(通过ajax)。然后服务器返回一个令牌,将其存储为cookie。对于随后每次通过ajax调用服务器(现在说到私有区域),也应发送令牌shuold并进行检查,并应提供适当的内容结果。

我该如何实施呢?安全和隐私问题是什么?

顺便说一句,我在服务器中使用C#,JQuery用于简单的Ajax管理,而Jquery.LoadJSON用于内容加载。 javascript的小胡子,提供诸如部分内容之类的东西。我正在寻找一种可以使我以简单明了的方式管理Cookie的东西,建议值得赞赏。

提前谢谢了!

参考方案

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

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

“ new”语句之后的花括号有什么作用? - java

我在查看this example并想知道第一行的作用:private SiteStreamsListener listener = new SiteStreamsListener() { 看起来您可以以这种方式声明其他方法或重写方法。例如,我可以做以下事情吗?ArrayList myList = new ArrayList() { @Override Str…

“ finally”子句在异常处理中的好处 - java

作为对此的新手,在异常处理中使用finally子句有什么好处。换句话说,什么时候最好使用它,什么时候最好不要使用它。我唯一想到的就是关闭输入/输出流……还有其他好处? 参考方案 StinePike撰写的任何内容都很完美,但我想在其中添加一些内容。无论是否发生异常,都将执行finally块...。因此,我们可以通过在try块以及catch block()中写入…

“ c#运算符是否就像Java中的instanceof一样?” - c#

我刚刚发现了这个运算符,我想知道它是否可以安全使用。我的意思是,在Java中,我们的老师总是告诉我们要避免使用instanceof(),因为它会破坏多态性并经常显示不良的编码。提前。 c#参考方案 它是安全的'。至少使用此检查更为安全,而不仅仅是强制转换并假定类型!您可能更喜欢使用as运算符,该运算符将转换为所需的类型(如果适用),否则返回null。只记得检…

如何使HtmlGenericControl属性runat =“ server”。以从代码访问它? - c#

访问运行时创建的某些HtmlGenericControl时,我遇到一个奇怪的问题。如何制作HtmlGenericControl runat ="server"?以便我可以访问它 HtmlGenericControl myli = new HtmlGenericControl("li"); c#参考方案 正确,因为run…

string.split(“ _(B”) - java

基本上,这行代码行不通,我不确定原因: String[] stringHolder = string.split("_(B"); 我收到此错误:索引3附近的未封闭组此行代码有效: String[] stringHolder = string.split("_B"); 因此,这使我相信它是由“(”引起的。有人可以告诉我如…