在MVC中添加拦截器实现登录后的权限验证

1.新建一个类 (以下实现了打印日志功能)

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcReporistory.Controllers
{
    public class LoggerFilter : FilterAttribute, IActionFilter
    {

        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            System.Web.HttpContext.Current.Response.Write("执行action前拦截");
            filterContext.Controller.ViewData["ExecutingLogger"] = "正要添加公告,已以写入日志!时间:" + DateTime.Now; 
        }

        void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
        {
            System.Web.HttpContext.Current.Response.Write("执行action后拦截");
            filterContext.Controller.ViewData["ExecutedLogger"] = "公告添加完成,已以写入日志!时间:" + DateTime.Now;
       }
   }

    



}
复制代码

2.在控制器中用[LoggerFilter]  标识这个控制器类

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcReporistory.Controllers
{
    [LoggerFilter]
    public class BookController : Controller,IActionFilter
    {
        //
        // GET: /Book/

        private Domain.IBookRepository.IBookRepository bookRepository;
        private Domain.Infrastructure.IUnitOfWork unitOfWork;

       
        public BookController()
        {
            Domain.Infrastructure.BookStoreDbContext bookStoreDbContext = new Domain.Infrastructure.BookStoreDbContext();
            bookRepository = new DAL.Repository.BookRepository(bookStoreDbContext);
            unitOfWork = new Domain.Infrastructure.UnitOfWork(bookStoreDbContext);

        }

        public ActionResult List()
        {
            IList<Domain.Models.Book> listBook = bookRepository.GetAllBooks();

            ViewBag.listdata = listBook;
            return View(listBook);
        }


        public ActionResult Cre()
        {
            Random rn=new Random();
            Domain.Models.Book book = new Domain.Models.Book();
            book.ISBN = rn.Next(1000,1000000).ToString();
            book.Title = "aaaa";
            book.Type = "类型";
            Create(book);
            return View();
        
        }


 
        public ActionResult Create(Domain.Models.Book book)
        {
            bookRepository.Insert(book);
            unitOfWork.Save();
            return RedirectToAction("List");
        }

    }
}
View Code
复制代码

 

posted @   甜菜波波  阅读(1643)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示