гость отказал в доступе к папке администратора, перенаправленной на Login.aspx

2

Я использую следующее в своем webconfig, так что только администратор получает доступ к папке администратора.

<location path="Admin" allowOverride="true">
<system.web>
  <authorization>
    <allow roles="Administrators" />
    <deny users="*" />
  </authorization>
</system.web>

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

Я хочу, чтобы пользователь либо всплыл, что пользователь не может получить к нему доступ, либо просто останется на одной странице с некоторым сообщением об ошибке в ярлыке на этой странице...

Любые предложения

спасибо

Вот еще код в webconfig

<authentication mode="Forms">
    <forms loginUrl="Login.aspx" protection="All" name="Cookie" timeout="120" path="/" slidingExpiration="true"
       defaultUrl="Default.aspx">
    </forms>
Теги:
security
login

3 ответа

1
Лучший ответ

это то, что я сделал на моей странице входа.

if (!IsPostBack)
        {

            if (User.Identity.IsAuthenticated)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
                {
                    Response.Redirect("~/Guest/Pagedenied.aspx");
                }
            }

        }

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

Если у кого-то есть что-нибудь лучше, предложите..

Спасибо

1

Вы можете использовать пользовательские ошибки. Посмотрите здесь и обратите внимание, что ошибка, которую нужно перенаправить, равна 401, а не 404.

  • 0
    да, я проверил это, но не мог понять некоторые части ...
  • 0
    Ну, я написал этот ответ в спешке, но я буду рад расширить его - вы можете объяснить, что вам там было трудно?
1

Вместо отказа в доступе в файле web.config вы можете запретить доступ программно в коде.

        if (User.IsInRole("Administrators"))
        {
            accessDeniedMessage.Visible = true;
            adminPage.Visible = false;
        }
        else
        {
            adminPage.Visible = true;
            // show admin page
        }
  • 0
    Есть ли способ сделать это .. я не знаю ... или перед входом на каждую страницу я проверяю, является ли пользователь в роли администратора ... ??
  • 0
    Я добавил фрагмент кода. Надеюсь, это поможет.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню