【问题标题】:ASP.NET MasterPage usage for authorization purposesASP.NET MasterPage 用于授权目的
【发布时间】:2019-01-11 05:33:49
【问题描述】:

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

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

  1. Reader.Master
  2. 作者.大师
  3. Admin.Master

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

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

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

【问题讨论】:

    标签: asp.net master-pages


    【解决方案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 这样的页面中为每个母版页使用相同的内容。

    【讨论】:

      【解决方案2】:

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

      以相同的方式创建User.MasterGuest.Master,您将拥有适用于各种用户的大师。 User.Master 只会检查用户是否登录。

      【讨论】:

        【解决方案3】:

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

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

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

        例如

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2012-05-07
            • 1970-01-01
            • 2021-10-27
            • 2015-11-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多