Action过滤器使用实例(一)
1.实例一
/// <summary>
/// 需要用户登陆的 action,执行提前验证
/// </summary>
public class LoginFilterAttribute : FilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
}
/// <summary>
/// 执行action 前验证 用户是否登陆,如果没有登陆返回字符串体质
/// </summary>
/// <param name="filterContext"></param>
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
// throw new NotImplementedException();
//1.判断
if (A_UserHelper.IsLogin() == false)
{
ContentResult result = new ContentResult();
result.Content = "亲,还没有登陆,请先登录";
filterContext.Result = result;
}
} }
2.实例二
public class LoginGoAttribute : FilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
//throw new NotImplementedException();
}
/// <summary>
/// 执行action 之前 验证用户是否登陆,如果没有登陆返回登陆页面
/// </summary>
/// <param name="filterContext"></param>
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
//throw new NotImplementedException();
if (A_UserHelper.IsLogin() == false)
{
//不跳转在当前地址返回登陆页------
//RouteData route = filterContext.RouteData;
//route.Values["controller"] = "user";
//route.Values["action"] = "login";
//IController IController = new UserController();
//HttpContextBase context = filterContext.HttpContext;
//IController.Execute(new RequestContext(context, route));
//filterContext.Result = new ContentResult(); //重定向到登陆页--------不推荐使用,因为当前action还是会执行
//HttpContextBase context = filterContext.HttpContext;
//context.Response.Redirect(SiteUrl.GetLogin(),true);
//context.Response.End();
//filterContext.ActionDescriptor = null; //临时重定向到登陆页
HttpRequestBase req = filterContext.HttpContext.Request;
string url = SiteUrl.GetLogin() + "?redirecturl=" + req.Url.AbsoluteUri;
RedirectResult result = new RedirectResult(url, false);
filterContext.Result = result; //此方法 失败
//HttpContextBase context = filterContext.HttpContext;
//UserController userC = new UserController();
//userC.ControllerContext = new ControllerContext();
//userC.ControllerContext.RouteData.DataTokens["controller"] = "user";
//userC.ControllerContext.RouteData.Values["area"] = "";
//ContentResult content = new ContentResult();
//content.Content = ViewHelper.RenderViewToString(userC, "login", null); ;
//filterContext.Result = content; }
}
}
更多:
MVC4过滤器:http://www.cnblogs.com/tianma3798/p/4666544.html
Action过滤器使用实例(一)的更多相关文章
- Asp.Net Mvc Action过滤器(二)
在Mvc中为Action添加过滤器,有两种方式, 一.使用ActionFilterAttribute,简单方式,同时支持Result的过滤处理, 1.可以为空,支持的重写:OnActionExecut ...
- asp.net MVC之Action过滤器浅析
在asp.net MVC中,Action过滤器是一大利器,它可以在以下两个步骤执行相关的代码: 1.执行Action方法之前:OnActionExecuting 2.Action方法执行完毕后:OnA ...
- 关于struts和Spring 结合到一起之后存在ACtion创建单实例还是多
struts 2的Action是多实例的并非单例,也就是每次请求产生一个Action的对象.原因是:struts 2的Action中包含数据,例如你在页面填写的数据就会包含在Action的成员变量里面 ...
- ASP.NET MVC : Action过滤器(Filtering)
http://www.cnblogs.com/QLeelulu/archive/2008/03/21/1117092.html ASP.NET MVC : Action过滤器(Filtering) 相 ...
- mvc 5 的过滤器和webapi 过滤器 对应实现的action过滤器区别
asp.net webapi Action过滤器实现这个: #region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, Publi ...
- MVC action过滤器验证登录
方法一 : 1.创建一个全局action过滤器 (在appstart 的filterconfig中注册 filters.Add(new LoginAttribute());) 2.不需要登 ...
- MVC中的Action过滤器
Action过滤器可以用在调用动作方法之前或之后,执行一些特殊的逻辑,比如用登录验证: Action过滤器实现IActionFilter接口,该接口有两个方法: public interface IA ...
- Django 过滤器 实例
实例1 safe让Html标签以及一些特殊符号(如<)生效,下面以例子说明: # value = '<b>CPT</b>' # 那么输出的时候,CPT就是加粗的,如果不加 ...
- 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例
本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...
随机推荐
- Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些
前言 CSS样式排序是指按照一定的规则排列CSS样式属性的定义,排序并不会影响CSS样式的功能和性能,只是让代码看起来更加整洁.CSS代码的逻辑性并不强,一般的开发者写CSS样式也很随意,所以如果不借 ...
- 使用Let’s Encrypt创建nginx免费SSL证书
资料参考: https://www.freehao123.com/top-8-free-ssl-cert/ 八大免费SSL证书-给你的网站免费添加Https安全加密 https://www.fre ...
- require.js 加载 vue组件 r.js 合并压缩
https://www.taoquns.com 自己搭的个人博客 require.js 参考阮一峰 Javascript模块化编程(三):require.js的用法 r.js 合并压缩 参考司徒正美 ...
- Caffe训练AlexNet网络模型——问题二
训练时,出现Check failed:error == cudaSuccess (2 vs. 0) out of memory,并且accruary = 0,如下图所示: 解决方法:将train_va ...
- Gitlab-API各状态码解释
200 – OK : This means that the GET , PUT, or DELETE request was successful. When you request a resou ...
- 8-13 Just Finish it up uva11093
题意:环形跑道上有n n<=100000 个加油站 编号为1-n 第i个加油站可以加油pi加仑 从加油站i开到下一站需要qi加仑 你可以选择一个加油站作为起点 初始油箱为空 如果 ...
- 第一个iOS程序:Hello iOS
今天我们来创建第一个iOS程序:Hello iOS!不需要写任何代码就能实现:
- vector 邻接表的建立(好笨啊,才懂,可能太困了吧)。。
原创,未经允许不得转载. 图的建立有两种,邻接矩阵和邻接表. 邻接矩阵适用于图较为密集,(稀疏图太浪费存储空间了),图如果较为稀疏,则使用邻接表为宜,dijkstra算法就是以邻接表为基础的. 有向无 ...
- 【mysql】当where后接字符串,查询时会发生什么?
好久没有研究一个“深层次”的问题了. 首先来看我们为什么要讨论这个问题~ 首先这是一个正常的数据库查询,我们可以看到在ruizhi数据库里的chouka表内,所有数据如图. 现在,我们运行查询: se ...
- 深入理解ajax系列第六篇
前面的话 每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用.XHR对象提供了操作头部信息的方法.本文将详细介绍HTTP的头部信息 默认信息 默认情况下,在发送XHR请求的同时,还会 ...