2

我们需要自定义 N2 身份验证的逻辑以添加几个选项。

我需要添加一个包含一些选项的 RadioButtonList,并根据登录时对该 RadioButton 的选择设置一个会话变量 - 否则用户无法在 N2 的预览窗格中看到该站点。我想我可以将 RadioButtonList 添加到 N2/Login.aspx 并创建一个扩展 N2.Edit.Login 的自定义登录类,并在调用 base.Login1_Authenticate 之前覆盖 Login1_Authenticate 方法来执行我的自定义逻辑。它似乎不是为可扩展而设计的,我无法覆盖该方法。为了进行更改,我必须使用这些更改对 N2 进行自定义编译,我想避免这种情况(应该对修改开放但对扩展开放),因此我们不必每次更新 N2 时都重做更改。

我尝试的另一条路线是创建 N2/CustomLogin.aspx 并在该自定义类中添加我的所有逻辑并将 web.config 设置为指向 CustomLogin.aspx 而不是 Login.aspx - 这最初将我发送到正确的登录页面但是登录失败将我重定向到没有单选按钮选项的 Login.aspx(假设是硬编码的)。

我们在 .Net 4.0(MVC 应用程序)上使用 N2 CMS 2.0.0.0

4

1 回答 1

1

N2 在幕后使用标准的 Forms Auth、ASP.NET Membership 和 Roles 提供程序。只要登录的用户名为 admin 或者是 3 个 N2 标准角色之一(管理员、编辑和作者 - 我认为),您就可以访问管理站点。

所以我建议你在你的应用程序中创建一个完全独立的登录页面。在您的 web.config 中使用类似这样的条目在您的自定义登录页面上点表单身份验证:

<authentication mode="Forms">
  <forms loginUrl="~/account/login"
         timeout="2880" />
</authentication>

在您的自定义登录表单中,您可以执行标准表单验证内容以使用户登录,以及设置您的会话变量。

我已经这样做了几次,效果很好。如果你不能让它工作,我建议你提供一个演示问题的示例,我会看看我是否能提供帮助。

于 2011-02-23T20:33:58.200 回答