C# 如何拒绝对页面的直接访问
如何拒绝直接访问asp.net中的页面(通过键入完整url),而不使用web.config中的角色。 我用过:C# 如何拒绝对页面的直接访问,c#,asp.net,session,C#,Asp.net,Session,如何拒绝直接访问asp.net中的页面(通过键入完整url),而不使用web.config中的角色。 我用过: if (Session.IsNewSession) Response.Redirect("Default.aspx"); 问题是第一次一切正常,重定向正常,但是如果我在同一个浏览器中打开一个新选项卡并再次输入url,就会失败。 怎么解决呢?? thanx试试这个: 第1页 Context.Items.Add("somevar","someval"); 第2页
if (Session.IsNewSession)
Response.Redirect("Default.aspx");
问题是第一次一切正常,重定向正常,但是如果我在同一个浏览器中打开一个新选项卡并再次输入url,就会失败。
怎么解决呢??
thanx试试这个:
第1页
Context.Items.Add("somevar","someval");
第2页
if ( Context.Items["somevar"] == null )
{
// the page is not redirected from Page 1
}
使用会话可以解决此问题 构建一个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";
我将使用
会话
,因为它将在请求之间持久化。Context.Items
集合将仅对一个请求有效,因此如果OP需要一些登录逻辑,那么它不是一个好的选择。如果是重定向页面,那么这是一个公平的解决方案。