2011-01-25 60 views
2

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

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

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

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

回答

1

N2底层使用标准窗体身份验证,ASP.NET成员资格和角色提供者。只要登录的用户名为admin或者是3个N2标准角色之一(管理员,编辑者和作者 - 我认为),您就可以访问管理站点。

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

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

在您的自定义登录表单,你可以做标准窗体身份验证的东西来获得用户登录,以及设置你的会话变量。

我已经做了几次,它工作正常。如果你无法正常工作,我建议你提供一个演示问题的示例,我会看看我能否提供帮助。