这可能是一个新手问题,但是;
假设我有一个ActionResult,我只想在下班后授予访问权限。
我们还要说我想用自定义属性装饰我的ActionResult。
所以代码可能看起来像;
[AllowAccess(after="17:00:00", before="08:00:00")]
public ActionResult AfterHoursPage()
{
//Do something not so interesting here;
return View();
}
完全如何才能让它发挥作用?
我已经完成了一些关于创建自定义属性的研究,但我认为我对如何使用它们感到遗憾。
请假设我对创建和使用它们几乎一无所知。
答案 0 :(得分:14)
试试这个(未经测试):
public class AllowAccessAttribute : AuthorizeAttribute
{
public DateTime before;
public DateTime after;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
throw new ArgumentNullException("httpContext");
DateTime current = DateTime.Now;
if (current < before | current > after)
return false;
return true;
}
}
更多信息: http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/
答案 1 :(得分:2)
您在.net mvc中寻找的是动作过滤器。
您需要扩展ActionFilterAttribute类并在您的案例中实现OnActionExecuting方法。
请参阅: http://www.asp.net/learn/mvc/tutorial-14-cs.aspx可以很好地介绍行动过滤器。
对于略微相似的内容,请参阅:ASP.NET MVC - CustomeAuthorize filter action using an external website for loggin in the user