2013-06-19 5 views
0

Я пытаюсь реализовать FormsAuthentication, но я получаю немного странное поведение. эти строки из web.config:FormsAuthentication разрешает доступ ко всем страницам

<authentication mode="Forms"> 
    <forms loginUrl="/contentpages/login.aspx" name="SiteAuth" protection="All" timeout="30" path="/" defaultUrl="/" requireSSL="false" cookieless="UseCookies" enableCrossAppRedirects="false" /> 
    </authentication> 
    <authorization> 
    <allow users="?" /> 
    </authorization> 

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

доступ к главной странице сайта (http://www.sample.com/) по какой-то причине перенаправляет меня на страницу входа в систему. Если я снова введите адрес в адресной строке, он приведет меня на домашнюю страницу сайта, как предполагалось (без необходимости входа в систему, я не заходил на вход, когда я попал на страницу входа в систему, просто повторил введенный адрес по адресу бар)

Почему это происходит?

Надеюсь, я ясно дал понять, в чем ситуация, если вам нужна дополнительная информация, не стесняйтесь спрашивать.

+0

Любопытный, вы получите такое же поведение при удалении правила авторизации для анонимных пользователей? – trnelson

+0

nope, offcourse он не будет делать то же самое, так как не требуется auth. но это все еще интересно. – Dementic

ответ

1

Возможно, вы видите эту функциональность, потому что вы не указываете местоположение. Попробуйте это:

<location path="your folder"> 
    <system.web> 
    your authorization 
    </system.web> 
</location> 

Другой вопрос может заключаться в том, как вы собираетесь предоставлять права. "?" предназначен для всех не прошедших проверку пользователей. Если вы пытаетесь просто предоставить доступ ко всем пользователям, вам будет лучше использовать «*».

Также важно отметить, что эти правила являются каскадными. Таким образом, вы можете добавить несколько правил для точной настройки вашего доступа. Например, если бы я хотел, чтобы предоставить доступ к определенной группе пользователей и запретить доступ ко всем остальным я хотел бы использовать:

<authorization> 
    <allow roles="administrators" /> 
    <deny users="*" /> 
</authorization> 
+0

Дело в том, что я хочу разрешить доступ ко всем страницам и разрешить только две страницы. добавление тега «Location» создает ошибку 500 (даже жестко я добавляю ее в раздел «Конфигурация», а также все еще доставляет объяснение поведению. – Dementic

+0

Вы должны иметь возможность добавить путь к местоположению = «корневая папка сайта» с разрешенными пользователями = "*", а затем создайте другое место для каждой из страниц, которые вы хотите отклонить. Это каскадирование, поэтому каждая авторизация, которую вы настроили, строится поверх предыдущего. Мне было бы интересно увидеть сообщение об ошибке, которое вы получаете. вы просматриваете страницу из браузера на сервере, вы должны иметь возможность получить полное сообщение об ошибке. – LoganGoesPlaces

+0

Ошибка, которую я получаю, является ошибкой 'dumb': Ошибка сервера 500 - Внутренняя ошибка сервера. Существует проблема с ресурс, который вы ищете, и его невозможно отобразить. – Dementic

Смежные вопросы