在我的母版页的Page_Load事件中,我有以下代码:
if(!Request.IsAuthenticated)
{
FormsAuthentication.RedirectToLoginPage();
} else
{
// Do something. Note: Any work here gets performed when request is authenticated.
}
但是,当我在未经过身份验证的情况下加载内容页面(使用主服务器)时,我不会被重定向到登录页面。为了获得所需的行为,我还需要在我的内容页面的Page_Load事件中添加上述检查。
这不是一个大问题,但只是烦恼在每个内容页面上进行上述检查。
所以我很好奇,当请求未经过身份验证时,母版页不会重定向到登录页面的原因是什么?
答案 0 :(得分:3)
如果你想要的只是FormsAuthentication重定向到登录页面,当用户没有登录时为什么不使用配置文件来执行此操作?
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
这应该会自动将所有“匿名”用户发送到FormAuth的已配置登录页面。
答案 1 :(得分:2)
您是否尝试过调试此问题 - 您的母版页Page_Load肯定在运行吗? 您可能将AutoEventWireUp设置为false或类似...
答案 2 :(得分:2)
我认为你需要看life cycle of Master page;通过这个你可以理解它是如何工作的。
首先运行单个.aspx
页面的Page_Load()
方法,然后在执行该方法后,运行母版页的Page_Load()
方法。
答案 3 :(得分:1)
如果您需要在多个地方使用相同的功能,则可以使用ASP.NET User Controls。
将您的代码放在usercontrol
中,并将usercontrol添加到您需要执行此代码的页面
答案 4 :(得分:1)
我不知道为什么你的代码不起作用,它与我完美配合。 您可以签入您的web.config,是否实现了登录页面的URL
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" timeout="2880" defaultUrl="~/somepage.aspx" />
</authentication>