Вот что я делаю для некоторых простейших сайтов. Он использует типичный forms authentication. От global.ascx.cs:
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
var unsecuredPages = new[]
{
"test.htm",
"email.htm"
};
bool letThrough = unsecuredPages.Any(s => Request.RawUrl.ToLowerInvariant().Contains(s));
if (letThrough)
{
return;
}
if (!User.Identity.IsAuthenticated &&
!Request.RawUrl.Contains(FormsAuthentication.LoginUrl))
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
}
Вы явно указать страницы, которые должны быть доступны для всех пользователей и все другие запросы будут перенаправляться на страницу входа в систему. Моя web.config выглядит примерно так:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" timeout="480" name="xyz" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="true"/>
</authentication>
<location path="Styles">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Есть ли причина, по которой вы не просто добавляете элементы для этих двух незащищенных страниц, как у вас для папки стилей? –
patmortech
Не совсем, я просто предпочитаю, чтобы он был там, а не в файле конфигурации, так что другие люди не возились с ним. У вас может быть противоположное требование. –
Когда я пишу приведенный выше код 'var unsecuredPages = new []' в Global.asax.cs, он запрашивает тип данных, который будет указан после нового: - / – Cipher