如何在不使用 web.config 中的角色的情况下拒绝对 asp.net 中页面的直接访问(通过键入完整的 url)。我用过:
if (Session.IsNewSession)
Response.Redirect("Default.aspx");
它的问题是在第一次一切正常并且重定向工作正常,但是如果我在同一个浏览器中打开一个新选项卡并再次输入 URL,它会失败。如何解决?谢谢
尝试这个:
第 1 页
Context.Items.Add("somevar","someval");
第2页
if ( Context.Items["somevar"] == null )
{
// the page is not redirected from Page 1
}
使用 session 可以解决这个问题。
构建一个 HttpModule 并在 context_BeginRequest 中获取当前 URL。稍后有条件地重定向到默认页面。
public class RedirectionModule : IHttpModule
{
void context_BeginRequest(object sender, EventArgs e)
{
//this user already already eligible to go inside page ?
if (Session["eligible-to-go-inside"] == null)
{
//new user
//check current request url is default.aspx
//if not forward to default page
}
}
}
在 default.aspx 页面中,如果用户完全满足进入内页的要求(如登录),则设置
Session["eligible-to-go-inside"] = "yes";