Я пытаюсь ограничить доступ неавторизованного пользователя к странице Utilities.aspx
и перенаправить его на страницу Default.aspx
.Вызов javascript перед ответом.redirect
if (authorizedUser.ToLower() != "admin")
{
if (!ClientScript.IsClientScriptBlockRegistered("UnauthorizedUserRedirect"))
{
ClientScript.RegisterStartupScript(this.GetType(), "UnauthorizedUserRedirect", "<script>alert('Unauthorized access!\n\nYou have attempted to access a page that you are not authorized to view.')</script>", true);
Response.Redirect("Default.aspx");
}
}
Однако, в то время как редирект работает нормально, alert
не отображается на странице. Поиск этой проблемы говорит мне, что Response.Redirect завершает свое действие до того, как код клиентской стороны вообще будет отображаться.
Как я могу показать alert
перед Response.Redirect
?
Я также попробовал эти два подхода в Page_Load
из Default.aspx
и оба не работают. Если установлен определенный сеанс, установите предупреждение.
if (Session["unauth"] != null)
{
ClientScript.RegisterStartupScript(this.GetType(), "UnauthorizedUserRedirect", "alert('Unauthorized access!\n\nYou have attempted to access a page that you are not authorized to view.');", true);
}
if (Session["unauth"] != null)
{
form1.Attributes.Add("OnLoad", "javascript:alert('Unauthorized access!\n\nYou have attempted to access a page that you are not authorized to view.');");
}
Или установите переменную сеанса во избежание вмешательства в запрос. Но общая идея пока лучшая среди ответов. – Renan
@Renan: сеанс также можно использовать. В любом случае, примите во внимание, что я не говорю о передаче какой-либо конфиденциальной информации через querystring. –
Я знаю. Просто я сделал это однажды, для сайта колледжа. В строке запроса появился текст, который будет отображаться в сообщении после выхода из системы. Студенты продолжали отправлять друг другу ссылки на страницу выхода с сообщениями вроде «вы вышли из системы, потому что толстые люди здесь не допускаются» и такие (например, мини-ссылки). – Renan