请教一个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
{
}