Tag: forms authentication

在控制器中授权Ajax Action方法的属性

我试图在我的MVC3应用程序中授权ajax动作方法。 当用户会话到期并要求执行ajax操作方法时,会发生此问题。 asp.net身份validation系统发送302重定向而不是发送401,这似乎是非Ajax请求的逻辑。 但是使用Ajax,这一切都很快搞砸了。 所以我决定按照ASP.NET MVC强制建议的方法, 当FormsLogin会话不再活动时,将AJAX请求重定向到登录页面 。 基本上,在请求结束时,我们检查请求是否是ajax请求并且存在重定向(302响应)。 如果是,那么我们将响应代码从302替换为401.因此在javascript中我们检查401并从那里执行重定向。 这是我提出的基本代码 在Global.asax.cs中 protected void Application_EndRequest() { var context = new HttpContextWrapper(Context); // If we’re an ajax request, and doing a 302, then we actually need to do a 401 if (Context.Response.StatusCode == 302 && context.Request.IsAjaxRequest()) { Context.Response.Clear(); Context.Response.StatusCode = 401; } } 在JQuery全局error handling程序中(包含在asp.net mvc主页:_Layout.cshtml中) […]

关闭浏览器时,自动从ASP.NET中的表单身份validation注销

当浏览器关闭或用户输入新地址时,有没有办法强制ASP.NET从其身份validation中退出? 如果浏览器保持打开状态,那么我需要对用户进行身份validation,因此最好在身份validation票证上超时。

AJAX和FormsAuthentication,如何阻止FormsAuthentication覆盖HTTP 401?

在使用FormsAuthentication配置的一个应用程序中,当用户访问没有auth cookie或过时的访问受保护页面时,ASP.NET会发出HTTP 401 Unauthorized,然后FormsAuthentication模块在请求结束前拦截此响应,并将其更改为HTTP 302 Found,设置HTTP标头“Location:/ path / loginurl”以便将用户代理重定向到登录页面,然后浏览器转到该页面并检索登录页面,该页面未受保护,获取HTTP 200好的。 当AJAX没有被考虑时,这确实是一个非常好的主意。 现在我在我的应用程序中有一个返回JSON数据的URL,它需要用户进行身份validation。 一切运作良好,问题是如果auth cookie到期,当我的客户端代码调用服务器时,它将获得带有登录页面的html的HTTP 200 OK,而不是HTTP 401 Unauthorized(因为之前已解释过)。 然后我的客户端试图将登录页面html解析为json,然后失败。 那么问题是:如何应对来自客户端的过期身份validation? 应对这种情况的最优雅解决方案是什么? 我需要知道调用何时成功,我想使用HTTP语义来实现。 是否可以以安全的跨浏览器方式从客户端读取自定义HTTP标头? 如果请求是AJAX请求,有没有办法告诉FormsAuthenticationModule不执行重定向? 有没有办法使用HTTP标头覆盖HTTP状态,就像覆盖HTTP请求方法一样? 我需要Forms身份validation,我想避免重写该模块或编写我自己的表单身份validation模块。 问候。

使用ASP.NET MVC进行jQuery Forms身份validation

是否可以使用jQuery ajax调用来执行ASP.NET MVC的表单身份validation? 我一直都找不到这样的例子。 更具体地说,如何在页面上设置auth cookie(没有重定向),以便我可以进行连续的经过身份validation的ajax请求?