MVC 自定义属性验证登录
1.新建自定义属性类
public class BaseFilterAttribute : FilterAttribute, IAuthorizationFilter { /// <summary> /// 自定义扩展属性,验证用户登录 /// </summary> /// <param name="filterContext">AuthorizationContext 类将封装有关控制器、HTTP 上下文、请求上下文、路由数据、操作描述符和操作结果的信息。</param> public void OnAuthorization(AuthorizationContext filterContext) { if (filterContext.HttpContext == null) { throw new Exception("HTTP 上下文不存在!"); } if (filterContext.HttpContext.Session == null) { throw new Exception("服务器Session不可用!"); } if (filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)) return; if (filterContext.HttpContext.Session[ConfigHelper.SessionCookieKey] != null) return; //if(filterContext.HttpContext.Request.Cookies[ConfigHelper.SessionCookieKey]==null) // filterContext.Result = new RedirectResult("~/Views/Account/Login.cshtml"); if (CookiesHelper.GetCookie(ConfigHelper.SessionCookieKey) == null) filterContext.Result = new RedirectResult(ConfigHelper.SessionCookieReturnUrl); } }
2.在相关的Controller类添加该自定义属性
[BaseFilter] public class PreListController : BaseController { }
3.设置不用验证的相关的方法允许匿名访问
[AllowAnonymous] public ActionResult Login() { return View(); }
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 35+程序员的转型之路:经济寒冬中的希望与策略
· 推荐 5 款实用的 Docker 可视化管理工具,工作效率翻倍!
· 瞧瞧别人家的接口重试,那叫一个优雅!
· 独立开发第二周:构建、执行、规划
· 【EF Core】框架是如何识别实体类的属性和主键的
· MySQL 13 为什么表数据删掉一半,表文件大小不变?
2013-07-05 TruncateTableWithFKByTableName