我正在尝试限制未经授权的用户访问Utilities.aspx
页面并将其重定向到Default.aspx
页面。
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
的{{1}}中尝试了这两种方法,两种方法都不起作用。如果设置了某个会话,则显示警报。
Default.aspx
答案 0 :(得分:3)
你做不到。
重定向是HTTP功能;执行重定向会完全跳过您的页面。
相反,您可以使用更多Javascript在警报后执行客户端重定向
具体来说,设置location.href
。
答案 1 :(得分:3)
Response.Redirect
正在设置Location
标题,浏览器在看到页面上的任何内容之前会看到并运行该标题。如果您希望页面实际执行,则必须先让它们进入页面,而不是仅仅重定向它们。
示例:
客户要求:
GET /Utilities.aspx HTTP/1.0
Host: www.somehost.com
User-Agent: Mozilla/4.0 (Windows XP)
Accept: text/html, */*
服务器响应:
HTTP 300 OK
Location: /SomeNewPage.aspx <-- Browser see this and goes
Content-Length: 12345
<html> <-- ignores from here down
...
<script>alert('You\'re being redirected');</script>
...
</html>
客户新请求:
GET /SomeNewPage.aspx HTTP/1.0
Host: www.somehost.com
User-Agent: Mozilla/4.0 (Windows XP)
Accept: text/html, */*
...
答案 2 :(得分:3)
您无法使用HTTP重定向+ javascript。如果你想在重定向之前显示警告信息,你需要使用100%的javascript解决方案,产生一个很大的安全漏洞,很容易导致对该页面的未经授权的访问。
我会说你能做的最好就是在目标页面上显示描述性消息。您可以为此发送查询字符串参数。
答案 3 :(得分:1)
我和@ClaudioRedi在一起。唯一的方法是通过JavaScript,以这种方式:
我的建议是,您在加载着陆页后会显示该提醒。
答案 4 :(得分:0)
尝试使用
ClientScript.RegisterStartupScript(Page.GetType(), "", script,true);
不
this.GetType()
但是
Page.GetType()
答案 5 :(得分:0)
而不是重定向,您可以尝试这样: -
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script language='javascript'>");
sb.Append("alert('hello');window.location.href=\"page2.aspx\"");
sb.Append("</script>");
ClientScript.RegisterStartupScript(typeof(Page), "anything", sb.ToString(), true);
答案 6 :(得分:0)
您需要将客户端重定向到另一个页面。
if (authorizedUser.ToLower() != "admin")
{
if (!ClientScript.IsClientScriptBlockRegistered("UnauthorizedUserRedirect"))
{
ClientScript.RegisterStartupScript(this.GetType(), "UnauthorizedUserRedirect", "alert('Unauthorized access!\n\nYou have attempted to access a page that you are not authorized to view.'); window.location.href = 'Default.aspx';", true);
}
}
答案 7 :(得分:0)
试试这个 在警报添加后的javascript函数中
top.location='default.aspx';
现在您的代码就像
一样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.');top.location='Default.aspx';</script>", true);
}
}