Пользовательские атрибуты ActionResult
-
20-09-2019 - |
Вопрос
Вероятно, это вопрос новичка, но;
Допустим, у меня есть ActionResult, к которому я хочу предоставить доступ только в нерабочее время.
Допустим также, что я хочу украсить свой ActionResult настраиваемым атрибутом.
Таким образом, код может выглядеть примерно так:
[AllowAccess(after="17:00:00", before="08:00:00")]
public ActionResult AfterHoursPage()
{
//Do something not so interesting here;
return View();
}
Как точно смогу ли я заставить это работать?
Я провел некоторое исследование по созданию пользовательских атрибутов, но думаю, что мне не хватает того, как их использовать.
Предположим, я почти ничего не знаю об их создании и использовании.
Решение
Попробуйте это (непроверено):
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/
Другие советы
В .net mvc вам нужны фильтры действий.
Вам потребуется расширить класс ActionFilterAttribute и реализовать в вашем случае метод OnActionExecuting.
Видеть:http://www.asp.net/learn/mvc/tutorial-14-cs.aspx за достойное введение в фильтры действий.
Также что-то похожее см.: ASP.NET MVC — действие фильтра CustomeAuthorize с использованием внешнего веб-сайта для входа в систему пользователя