ASP.NET MasterPage用于授权目的

问题描述 投票:0回答:4

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

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

  1. Reader.Master
  2. Author.Master
  3. Admin.Master

这些继承自Main.Master。我正在检查用户是否真的登录(Session不为空),如果在UserTypeReader.MasterAuthor.Masters Admin.Master函数中Page_Init()为真。

第一个问题:这是一个好习惯吗?请考虑我没有使用其他ASP.NET内置东西进行用户管理,授权等的经验。

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

asp.net master-pages
4个回答
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等页面中使用每个母版页的相同内容。


1
投票

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

以相同的方式创建User.MasterGuest.Master,您将拥有所有类型用户的主人。 User.Master仅检查用户是否已登录。


1
投票

好吧,主页中的身份验证是可以接受的,如果不是最好的做法。我看过很多从这种教程开始的书。但是,当您的网站扩展时,您可能会面临一些问题,还可以处理除了haldler或global.asax等页面以外的身份验证相关数据。

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

关于你的第二个问题然后是你得到的是所用方法的副作用。您可以做的是使用三个主页中的任何一个创建一个页面。在您正在检查身份验证的母版页中,您将获得页面的名称,以及页面名称是否与forgot.aspx相同,或者只是忽略了什么,退出正常过程。

例如

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

}
else
{
    doauthentication();
}

0
投票

只是把它作为一个没有母版页的普通网页页面,如果用户忘记了密码就无法登录,你只需要向他们展示像登录页面一样的普通页面

© www.soinside.com 2019 - 2024. All rights reserved.