0

我正在使用母版页进行授权。我有三种不同的用户类型:读者、作者和管理员。

我有一个Main.Master包含我的页面的基本内容。然后我有,

  1. 读者大师
  2. 作者.大师
  3. 管理大师

这些继承自Main.Master. 我正在检查用户是否真的登录(Session不为空)以及在, , s函数中是否UserType为真。Reader.MasterAuthor.MasterAdmin.MasterPage_Init()

第一个问题:这是一个好习惯吗?请考虑到我在使用其他 ASP.NET 内置内容进行用户管理、授权等方面的经验为零。

第二个问题:有一些页面ForgotPassword.aspx,所有UserTypes 都应该访问同一个页面。在我的结构中,我需要创建三个不同的页面,这些页面继承自三个不同的硕士。如何解决这个问题?

4

4 回答 4

1

第二个问题:有一些像 ForgotPassword.aspx 这样的页面,所有用户类型都应该访问同一个页面。在我的结构中,我需要创建三个不同的页面,这些页面继承自三个不同的硕士。如何解决这个问题?

以相同的方式创建User.Master和创建Guest.Master,您将拥有适用于所有类型用户的大师。User.Master 将仅检查用户是否已登录。

于 2013-04-18T10:17:41.120 回答
1

对于您的第一个问题:我使用它类似。我不确定这是否是一个好的解决方案,但它对我有用。

第二个问题:您可以ContentPlaceHolder在母版页中定义。

<asp:ContentPlaceHolder ID="MyId" runat="server" />

在您的 aspx 站点中,您为每个ContentPlaceHolder容器Content定义。

<asp:Content ContentPlaceHolderID="PageContent" runat="server">
    <!-- content for this area -->
</asp:Content>

如果您在您的三个用户类型的母版页ContentPlaceHolder中定义相同的母版页,ID您可以在类似 Forgot.aspx 的页面中为每个母版页使用相同的内容。

于 2013-04-18T10:17:43.597 回答
1

好吧,如果不是最佳实践,母版页中的身份验证是可以接受的。我看过很多以此类教程开头的书。但是,当您的网站扩展时,您可能会遇到一些问题,并且在 haldlers 或 global.asax 等页面之外处理与身份验证相关的数据可能会很痛苦。

但是,当网站范围有限并且您不需要高级功能时,这种身份验证就可以了。

关于你的第二个问题,是的,你得到的是正在使用的方法的副作用。您可以做的是使用三个母版页中的任何一个只创建一个页面。在您正在检查身份验证的那个母版页中,您会得到页面的名称,如果页面名称与 forgot.aspx 相同,或者只是忽略的内容,则退出正常进程。

例如

if (System.IO.Path.GetFileName(Request.PhysicalPath).ToLower() == "forgot.aspx")
{

}
else
{
    doauthentication();
}
于 2013-04-18T10:24:27.587 回答
0

把它做成一个没有母版页的普通webform页面,用户忘记密码就无法登录,你只需要给他们一个像登录页面一样的普通页面

于 2019-01-10T21:33:49.187 回答