Shanalal Kasim Ответов: 3

Как ограничить доступ к прямым url - адресам


Привет,

В моем веб-приложении используется проверка подлинности формы. Первая загрузка страницы входа(Login.aspx) после успешного входа перенаправляет на форму Default.aspx. В списке страниц по умолчанию все меню, нажав на меню страница загружается внутри страницы по умолчанию(с помощью элемента управления Telerik).
Теперь я сталкиваюсь с проблемой, когда пользователь вводит прямой url-адрес (предположим, что одно из имен страницы-page1.aspx), например: Myapplication/page1.aspx страница загружается, я хочу ограничить это.

Пожалуйста, предложите решение для этого.

3 Ответов

Рейтинг:
2

Member 10748088

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class NoDirectAccessAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.UrlReferrer == null ||
 filterContext.HttpContext.Request.Url.Host != filterContext.HttpContext.Request.UrlReferrer.Host)
        {
     filterContext.Result = new RedirectToRouteResult(new
                               RouteValueDictionary(new { controller = "Home", action = "Logout", area = "Main" }));
        }
    }
}



Затем добавьте атрибут к контроллеру.


Richard Deeming

Это может быть разумный ответ, если ОП использовал MVC.

Многочисленные ссылки на .aspx в этом вопросе можно было бы предположить, что они используют веб-формы, где этот ответ не будет работать.

Рейтинг:
0

jim lahey

Все это можно сделать в файле web.config с тегом location:

<location path="Page1.aspx" allowoverride="false">
   <system.web>
     <authorization>
       <deny users="?" roles="TEMP" />
       <allow roles="ADMIN, USERS" />
     </authorization>
   </system.web>
 </location>



Пожалуйста, смотрите следующие ссылки для получения более подробной информации:

https://wiki.asp.net/page.aspx/653/aspnet-webconfig--location-and-authroization-tags/[^]

ASP.NET членство - часть 1[^]


Shanalal Kasim

пользователь получает доступ к прямому url-адресу(Myapplication/page1.aspx) после успешного входа в систему, поэтому авторизация не работает

jim lahey

именно так это и должно работать, не так ли? Если пользователь входит в систему, он или она имеет доступ к вещам, которые анонимные пользователи не имеют..

Shanalal Kasim

пользователь может получить доступ к этой странице через страницу по умолчанию а не напрямую

jim lahey

Что ты имеешь в виду?

Shanalal Kasim

В списке страниц по умолчанию все меню, нажав на меню страница загружается внутри страницы по умолчанию(с помощью элемента управления Telerik). предположим, пользователь нажимает на page1.меню aspx в то, что страница загрузки внутрь по умолчанию.aspx страниц (url-адрес, браузер Мое_приложение/по умолчанию.аспн этот URL-адрес не меняется, пользователь нажимая кнопку Далее меню, то страница будет загружаться внутри страницы по умолчанию).
моя проблема заключается в при тип пользователей какой-либо прямой URL-адрес(за исключением Мое_приложение/по умолчанию.aspx или Мое_приложение/логин.аспн) то, что URL-адрес будет перенаправлять на Мое_приложение/по умолчанию.aspx-файл

jim lahey

Что это за Телерик такой?

Shanalal Kasim

Пожалуйста, проверьте демо URL-адрес
http://demos.telerik.com/aspnet-ajax/window/examples/radwindowandmdi/defaultcs.aspx

Рейтинг:
0

psychic6000

поиск и изучение "переменных sassion" и мастера сайта (необязательно)

при входе в систему используйте в качестве переменной сеанса для хранения регистрационной информации,

каждая страница или ваша главная страница должна проверять наличие этой переменной в сеансе, если это нормально, она позволяет пользователю загружать страницу, в противном случае она перенаправляет его на страницу входа в систему

на странице входа в систему:

Session.add("myvarableName", "Value")

на главной странице или в каждой загрузке страницы
с#

if (Session["myvariableName"]!=Null & Session["myvariable"]!= "value") Response.Redirect("Login.aspx",true);


глаг .чистая

if Session("myvariableName") isnot nothing and Session("myvariable") = "value"
Response.Redirect("Login.aspx",true)
end if