N2自定义登录逻辑

时间:2011-01-25 20:39:32

标签: c# n2 n2cms

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

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

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

我们在.Net 4.0(MVC app)上使用N2 CMS 2.0.0.0

1 个答案:

答案 0 :(得分:1)

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

因此,我建议您在应用中创建一个完全独立的登录页面。使用web.config中的条目在您的自定义登录页面上指定身份验证:

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

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

我已经完成了几次,它运行正常。如果你无法使它工作,我建议你提供一个演示问题的样本,我会看看我是否能提供帮助。