我怎么能在另一个应用程序中使用dotnetnuke

时间:2018-04-10 18:59:31

标签: asp.net dotnetnuke

我开发了一个应用程序,允许用户登录以完成不同的任务。但是,我正在使用现有的dnn数据库进行登录;我已经认识到门户网站使用加密存储密码,但我无法获得用于加密密码的源代码,以便用户输入的密码与dnn数据库中的密码相匹配。我怎么能绕过这个? DNN版本是04.09.05

更新

 try
    {
        //validate username/password combination
        DotNetNuke.Entities.Users.UserInfo myUser = new DotNetNuke.Entities.Users.UserInfo();
        DotNetNuke.Security.Membership.UserLoginStatus userLoginStatus = new DotNetNuke.Security.Membership.UserLoginStatus();
       myUser = DotNetNuke.Entities.Users.UserController.ValidateUser(myPortal, myUsername, myPassword, "", "", "", ref userLoginStatus);

        if (userLoginStatus == DotNetNuke.Security.Membership.UserLoginStatus.LOGIN_SUCCESS ||
        userLoginStatus == DotNetNuke.Security.Membership.UserLoginStatus.LOGIN_SUPERUSER)
        {
            //login the user ...
            DotNetNuke.Entities.Users.UserController.UserLogin(PortalId, myUser, "", "", true);
            Response.Redirect("~/Home/Welcome.aspx");
        }
        else
        {
            lblError.Text = "Invalid Username or Password";
        }
    }
    catch (Exception ex)
    {
        lblError.Text = "Error!! " + ex.Message.ToString();
    }


}

1 个答案:

答案 0 :(得分:0)

DNN 4.9.5的源代码可用,您有几个选择。

  1. 您可以将服务部署到4.9.5安装,将登录作为外部应用程序的API公开。这样您就可以按预期使用DNN 4.x API,也不需要自定义规避,这对您来说也很有用。

  2. 您可以查看来源并从UserController.ValidateUser中提取登录代码,然后在您的代码中重新执行此操作。密码salting和加密过程是标准ASP.NET Membership的过程。您最关心的是,您需要在DNN和DNN之间保持机器密钥值相同。另一个申请

  3. 另外,仅仅是因为评论中提到了它。如果这是公开的,我强烈建议升级。有超过30个安全漏洞适用于您当前的DNN版本。