如何拒绝直接访问(通过输入完整的URL)到asp.net中的页面,而不使用web.config中的角色simle。 我用过:
if (Session.IsNewSession)
Response.Redirect("Default.aspx");
它的问题是第一次一切正常并且重定向正在工作,但是如果我在同一个浏览器中打开一个新选项卡并再次输入url则会失败。 怎么解决? 感谢名单
答案 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";