2

如何在不使用 web.config 中的角色的情况下拒绝对 asp.net 中页面的直接访问(通过键入完整的 url)。我用过:

if (Session.IsNewSession)
            Response.Redirect("Default.aspx");

它的问题是在第一次一切正常并且重定向工作正常,但是如果我在同一个浏览器中打开一个新选项卡并再次输入 URL,它会失败。如何解决?谢谢

4

2 回答 2

3

尝试这个:

第 1 页

Context.Items.Add("somevar","someval");

第2页

if ( Context.Items["somevar"] == null )
{
    // the page is not redirected from Page 1
}
于 2012-10-14T12:44:06.483 回答
0

使用 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";
于 2012-10-14T12:58:41.017 回答