如何拒绝直接访问页面

时间:2012-10-14 12:41:36

标签: c# asp.net session

如何拒绝直接访问(通过输入完整的URL)到asp.net中的页面,而不使用web.config中的角色simle。 我用过:

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

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

2 个答案:

答案 0 :(得分:3)

试试这个:

第1页

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

第2页

if ( Context.Items["somevar"] == null )
{
    // the page is not redirected from Page 1
}

答案 1 :(得分:0)

使用会话可以解决此问题。

构建一个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";