none
событие загрузки главной страницы. RRS feed

  • Вопрос

  • Привет! Мне нужно событие, предшествующее загрузке ГЛАВНОЙ страницы, чтоб после некой проверки переключить пользователя на страницу "Акцесс денайд", если это нужно. 

    проверяю например в Application_BeginRequest, 

    но туда прилетает не только событие главной страницы, но и всякие PartialResult'ы, и прочие запросы. 

    Как в бэгин_рекуэсте отличать запрос, валящийся с именно страницы (Например localhost:port\Home\List) от всяких аджакс вызовов, и частичных страниц я не нашёл. 
    Я долго шарился в отладчике, но так и не понял.

    второй способ - Это написать класс аутентификации

    public class AuthorizeClass1 : FilterAttribute, IAuthenticationFilter

    {    public void OnAuthentication(AuthenticationContext context)   

    {       

    IAccountRepository acc = DependencyResolver.Current.GetService<IAccountRepository>();       

    bool access = acc.GetAccess();       

    if (!access)           

    context.Result = new HttpUnauthorizedResult();   

    }   

    public void OnAuthenticationChallenge(AuthenticationChallengeContext context)   

    {       

    if (context.Result == null || context.Result is HttpUnauthorizedResult)       

    {               

    context.Result = new RedirectToRouteResult(new RouteValueDictionary  { 

    {"controller", "Applications"},                   

    {"action",  "AccessDenaid"}               

    });       

    }   

    }

    }



    и проверять у него в OnAuthentication права пользователя . 

    Тогда мне придётся размещать атрибут [AuthorizeClass1] над каждым ActionResult методом, возвращающий главную страницу, а не частичную. 
    Например:
    public class HomeController
    {
    
     
     public ActionResult PartialChtototTam()
     {
     
    	return View();
     }
     
     
     [AuthorizeClass1]
     public ActionResult List()
     {
    	return View();
     }
     
     [AuthorizeClass1]
     public ActionResult Index()
     {
    	return View();
     }
    


    Мне такой подход не нравится. 

    Я могу как-либо поместить [AuthorizeClass1] над классом контроллера, и потом как-то обрабатывать только нужные мне ЭкшонРезалты, чтоб всякие shtml'ы в которых модальные формы и всякие листбоксы не летели в него ?


    30 июля 2019 г. 10:36

Все ответы