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; } } }
更多:
分类:
Asp.Net MVC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人