asp.net mvc Ajax服务器跳转

1.过滤器权限验证

 1  [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]
 2         public class CustomAuthAttribute : ActionFilterAttribute, IAuthorizationFilter
 3         {
 4             public void OnAuthorization(AuthorizationContext filterContext)
 5             {
 6                 if (!filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)
 7                             && !filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true))
 8                 {
 9                     UserInfo user = filterContext.HttpContext.Session["CurentUser"] as UserInfo;
10                     if (user == null || user.Id <= 0)
11                     {
12                         if (filterContext.HttpContext.Request.IsAjaxRequest())
13                         {
14                             filterContext.Result = new HttpStatusCodeResult(499);
15                             filterContext.HttpContext.Response.Write("/Home/Login");
16                             return;
17                         }
18                         else
19                         {
20                             filterContext.Result = new RedirectResult("/Home/Login");
21                             return;
22                         }
23                     }
24                 }
25             }
26         }

2.客户端重写$.Ajax,最好在母版页中加上此代码,统一处理

 1 <script type="text/javascript">
 2     (function ($) {
 3         //备份jquery的ajax方法
 4         var _ajax = $.ajax;
 5         //重写jquery的ajax方法
 6         $.ajax = function (opt) {
 7             //备份opt中error和success方法
 8             var fn = {
 9                 error: function (XMLHttpRequest, textStatus, errorThrown) { },
10             }
11             if (opt.error) {
12                 fn.error = opt.error;
13             }
14             //扩展增强处理
15             var _opt = $.extend(opt, {
16                 error: function (XMLHttpRequest, textStatus, errorThrown) {
17                     //错误方法增强处理
18                     if (XMLHttpRequest.status == "499") {
19                         window.location.href = "/FlexibleBenefit/Login";
20                     }
21                     else
22                     {
23                         fn.error(XMLHttpRequest, textStatus, errorThrown);
24                     }
25                 }
26             });
27             _ajax(_opt);
28         };
29     })(jQuery);
30
31     $.ajaxSetup({
32         statusCode: {
33             499: function (data) {
34                 window.location.href = data.responseText;
35             }
36         }
37     });
38 </script>

  

时间: 2024-11-01 20:36:21

asp.net mvc Ajax服务器跳转的相关文章

ASP.NET MVC ajax提交 防止CSRF攻击

//在View中 <script type="text/javascript"> @functions{ public string ToKenHeaderValue() { string cookieToken,fromToken; AntiForgery.GetTokens(null,out cookieToken,out fromToken); return cookieToken+":"+fromToken; }} $function({ ...

ASP.NET MVC AJAX调用JsonResult方法并返回自定义错误信息

一.如何用AJAX调用JsonResult方法 比如FuckController中添加有个返回JsonResult类型的方法FuckJson(): public JsonResult FuckJson() { return new JsonResult() { Data = new List<string>() { "fuck", "shit" }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }

asp.net mvc ajax.beginform()无法上传文件

Asp.Net Mvc使用Ajax.BeginForm上传文件Request.Files始终为null. 使用jquery.form.js插件能解决问题.asp.net mvc ajax.beginform()无法上传文件

Asp.Net MVC Ajax

将ASP.NET MVC中的form提交改为ajax提交 在ASP.NET MVC视图中通过 @using (Html.BeginForm()) 产生的是form表单提交代码,可以用javascript代码截获这个form提交,改为ajax提交,示例代码如下: 代码来自:http://www.cnblogs.com/dudu/archive/2011/12/07/asp_net_mvc_form_ajax.html $('#form1').submit(function () {    if (

ASP.NET MVC ajax处理 AjaxResult

1.统一ASPNET MVC 对ajax请求响应格式定义,方便前端统一处理ajax结果. 1)定义程序返回结果数据格式 1 /// <summary> 2 /// 执行结果 3 /// </summary> 4 /// <typeparam name="T"></typeparam> 5 public class RunResult<T> 6 { 7 /// <summary> 8 /// 操作状态 9 /// &

ASP.NET MVC Ajax.ActionLink 简单用法

ASP.NET MVC 项目中,如何使用类似于 iframe 的效果呢?或者说 Ajax 局部刷新,比如下面操作: 我们想要的效果是,点击 About 链接,页面不刷新(地址栏不变),然后下面的内容进行更新,其实实现这个效果,很简单,只需要使用 Ajax.ActionLink 即可. 1. 安装 Microsoft.jQuery.Unobtrusive.Ajax 程序包 Install-Package Microsoft.jQuery.Unobtrusive.Ajax 2. 引用 JS 文件:

基于asp.net MVC 的服务器和客户端的交互(三)之客户端请求响应

一.分析 WEB API 中HTTP 请求方式的四个主要方法 (GET, PUT, POST, DELETE), 按照下列方式映射为 CURD 操作: GET 用于获取 URI 资源的进行展示,GET 操作不应对服务端有任何影响,用于数据集合的Select查询: PUT 用于更新 URI 上的一个资源,如果服务端允许,PUT 也可以用于新建一个资源,用于相关的Insert插入操作: POST 用于新建资源,服务端在指定的URI 上创建一个新的对象,将新资源的地址作为响应消息的一部分返回,用于相关

ASP.NET MVC Ajax 伪造请求

1.前言 CSRF(Cross-site request forgery)跨站请求伪造,ASP.NET MVC 应用通过使用AJAX请求来提升用户体验,浏览器开发者工具可以一览众山小,就很容易伪造了请求对应用进行攻击,从而泄露核心数据,导致安全问题.微软自带AntiForgeryToken可以解决,而且语法简单(AJAX请求发起时传递给后台一个字符串,然后在Filter中进行校验) 2.场景如下 为了验证一个来自form post请求,还需要在目标action上增加自定义[AntiForgery

取经——ASP.NET MVC Ajax

一直对ASP.NET MVC 的异步提交搞不懂,今天决定一探究竟. 其实核心都封装在jquery.unobtrusive-ajax.js里. 我们发现所有的代码都放在了(function($){}(jQuery))里,这个结构很奇妙,一般的js函数都是function(){},可这个后面多了个参数,其实说白了这是个匿名方法,我们一点点还原它的真实面目. 我们可以写成这样(function($){})(jQuery), 我们再把function方法拿出来 function aa($){ } aa(