首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请问一个MVC控制器写法的有关问题

2013-12-06 
请教一个MVC控制器写法的问题想在控制器中实现判断当前用户是否能够执行此功能,代码如下:public class Hom

请教一个MVC控制器写法的问题
想在控制器中实现判断当前用户是否能够执行此功能,代码如下:


public class HomeController : Controller
{
        public ActionResult test1()
        {         
            /*控制器内所有方法内都有相同的代码,判断是否有权限执行,如果有执行才往下执行*/
           ........         
            return View();
        }

        public ActionResult test2()
        {
           /*控制器内所有方法内都有相同的代码,判断是否有权限执行,如果有执行才往下执行*/
           ........         
            return View();
        }
}


除了定义一个公用的方法判断外,还有没有其它更好的方法呢?
[解决办法]
使用权限验证过滤器

http://www.codeproject.com/Articles/577776/AplusBeginner-27splusTutorialplusforplusUnderstand
[解决办法]

    /// <summary>
    /// 声明控制器基类,由子类继承
    /// </summary>
    public class ControllerBase : Controller
    {
        protected override void Execute(System.Web.Routing.RequestContext requestContext)
        {
            string controller = requestContext.RouteData.Values["controller"].ToString();
            string action = requestContext.RouteData.Values["action"].ToString();

            /*控制器内所有方法内都有相同的代码,判断是否有权限执行,如果有执行才往下执行*/
            


            base.Execute(requestContext);
        }

    }

[解决办法]


AuthorizeAttribute

[Authorize]
public class HomeController : Controller

[解决办法]

[AttributeUsage(AttributeTargets.Class 
[解决办法]
 AttributeTargets.Method, AllowMultiple = false)]
    public class AuthorizeFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            /*
            判断权限                       
            */            
        }
    }



[AuthorizeFilter]
public class BaseController : Controller
{

}
//继承BaseController避免每个Controller添加AuthorizeFilter
public class HomeController : BaseController
{

}

热点排行