У нас есть несколько HTML-страниц в виртуальном каталоге Payroll в IIS7
. Одна из HTML-страниц называется Sales.html . Все эти страницы являются чистым HTML.
Я включил Forms Authentication
и изменил web.config
, чтобы страницы HTML попадали под этот тип аутентификации. Вот как выглядит мой web.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="Users" value="BobJ,JosephB"/>
</appSettings>
<system.webServer>
<handlers>
<add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
<add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<system.web>
<authentication mode="Forms">
<forms name="appNameAuth" path="/" loginUrl="login.aspx" defaultUrl="index.html" protection="All" timeout="525600">
<credentials passwordFormat="Clear">
<user name="[user]" password="[password]" />
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
<compilation debug="true" targetFramework="4.5">
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<httpRuntime targetFramework="4.5" />
<customErrors mode="Off"/>
</system.web>
</configuration>
Итак, Page_Load
из login.aspx
выглядит следующим образом. При Аутентификации по формам любой посетитель любого Sales.html будет перенаправлен на login.aspx
.
Я хотел проверить в page_load
, сравнить пользователя со списком пользователей в web.config и Response.Redirect
в соответствии с пользователем:
protected void Page_Load(object sender, EventArgs e)
{
string htmlPage = Convert.ToString(Request.QueryString["ReturnUrl"]);
string user = Request.LogonUserIdentity.Name;
string users = ConfigurationManager.AppSettings["Users"].ToString();
string[] allUsers = users.Split(',');
if (allUsers.ToList().Contains(user))
{
Response.Redirect(htmlPage);
}
else
{
Response.Redirect("InvalidUser.html");
}
}
Проблема заключается в бесконечном перенаправлении: каждый раз, когда page_load
перенаправляет на Sales.html , это приведет меня к login.aspx , что затем приведет меня * снова * до Sales.html . Это бесконечный цикл.
Какие у меня есть альтернативы? Я не хочу создавать целевую страницу.