新建基类继承Controller,重写操作方法调用前事件,验证权限,调用时继承基类, 页面按钮组件权限,还是使用HttpHandler控制合适
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using JiJin.Entity; public class BaseController : Controller { //保存免验证页面 private Dictionary<string, string> UrlRoute = new Dictionary<string, string> { { "Announcement", "Announcement" } }; //重写方法调用前事件 protected override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Session != null) { if (filterContext.HttpContext.Session["UserInfo"] != null) { //验证用户登录 U_UserInfo UserInfo = Session["UserInfo"] as U_UserInfo; if (UserInfo == null) { //没有登录跳转到登录页面 filterContext.Result = new RedirectResult("/Home/Login"); } //判断是否进行过支付密码登录,没有则验证当前页面是否是免支付登录验证 if (!UserInfo.IsPayLogin) {
//获取当前访问的action
string actionname = filterContext.RouteData.Values["Action"].ToString(); if (!UrlRoute.ContainsKey(actionname)) { //没有支付登录跳转支付登录页面 filterContext.Result = new RedirectResult("/Home/PawLogin"); } } } else { //没有登录跳转到登录页面 filterContext.Result = new RedirectResult("/Home/Login"); } } base.OnActionExecuting(filterContext); } }