如何在DNN中使用Custom UserAuthantication

时间:2012-03-19 10:32:35

标签: asp.net c#-4.0 dotnetnuke dotnetnuke-6

我创建了一个包含单个超链接的新登录皮肤对象。此skinobject放置在另一个自定义sking对象上。单击此登录超链接时,我打开一个弹出一个div,这个div包含放置在Desktopmodules / Admin / Autanticationservice /中的DNN内置登录控件。现在,当弹出登录模块并单击登录按钮时,这将触及DNN登录模块的login_clicked事件。在这里,我通过调试看到用户通过了身份验证但在最后一行“OnUserAuthenticated(args)”中的此方法内部没有被调用... ??? ???任何想法.. ???

2 个答案:

答案 0 :(得分:0)

我也有这个,也没有弄清楚如何解决真正的问题,但你可以通过替换来解决它:

UserController.ValidateUser(PortalId, txtUsername.Value, txtPassword.Value, "DNN", string.Empty, PortalSettings.PortalName, IPAddress, ref loginStatus);

UserController.UserLogin(PortalSettings.PortalId, txtUsername.Value, txtPassword.Value, string.Empty, PortalSettings.PortalName, IPAddress, ref loginStatus, false);

它至少会记录你,但你必须处理自己的重定向。

这是一个黑客,我对它不满意,但希望这有助于其他人。

答案 1 :(得分:0)

我遇到了同样的问题,看了很长时间,最终不得不下载完整的源代码并按照代码在完整的 dnn 应用程序中登录:

添加以下内容后,我可以成功验证用户身份:

        // from above
        UserController.UserLogin(PortalSettings.PortalId, txtUsername.Value, txtPassword.Value, string.Empty, PortalSettings.PortalName, IPAddress, ref loginStatus, false);
        // login and auth with DNN
        var existingUserEventArgs = new UserAuthenticatedEventArgs(loginUser, loginUser.Username, loginStatus, "DNN");
        existingUserEventArgs.Authenticated = true;
        EventManager.Instance.OnUserAuthenticated(new UserEventArgs { User = loginUser });
        // success - redirect - or what ever