Я использую следующее в своем 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>
это то, что я сделал на моей странице входа.
if (!IsPostBack)
{
if (User.Identity.IsAuthenticated)
{
if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
{
Response.Redirect("~/Guest/Pagedenied.aspx");
}
}
}
таким образом, папке администратора запрещается погода, это aspx-страницы или любой другой файл в нем... и экран входа также можно избежать...
Если у кого-то есть что-нибудь лучше, предложите..
Спасибо
Вы можете использовать пользовательские ошибки. Посмотрите здесь и обратите внимание, что ошибка, которую нужно перенаправить, равна 401, а не 404.
Вместо отказа в доступе в файле web.config вы можете запретить доступ программно в коде.
if (User.IsInRole("Administrators"))
{
accessDeniedMessage.Visible = true;
adminPage.Visible = false;
}
else
{
adminPage.Visible = true;
// show admin page
}