远程登录DotNetNuke站点

本文关键字:DotNetNuke 站点 登录 程登录 | 更新日期: 2023-09-27 18:16:29

我正在为DotNetNuke 7创建一个简单的web服务,这将允许iOS或Android应用程序通过我们的网站验证用户,以确保他们是会员,因此允许在应用程序上查看受限制的内容。

我有一个测试web服务运行响应匿名连接。我实际上如何得到它登录到网站和检索数据回来(如角色和联系信息)?

public class SiteLoginController : DnnApiController  
{
    [DnnAuthorize]
    [HttpGet]
    public HttpResponseMessage LoginToSite(string username, string password)
    {
        // go log into website
        // if they have an account
        // retrieve role and contact info
        // else
        // return invalid credentials message
    }
}

我已经在网上看了一段时间了,现在大多数答案似乎与允许匿名访问而不是实际验证用户有关。

远程登录DotNetNuke站点

您不需要登录来获取用户信息。虽然我不确定日志部分工作从一个web服务

UserInfo user = UserController.GetUserByName(username);
if (user != null)
{
    string email = user.Email;
}
else
{
    //user not found
}

或者如果你想登录以增加安全性,你可以这样做:

string resultText = string.Empty;
UserLoginStatus loginStatus = new UserLoginStatus();
UserController.UserLogin(PortalId, username, password, null, PortalSettings.PortalName, DotNetNuke.Services.Authentication.AuthenticationLoginBase.GetIPAddress(), ref loginStatus, false);
switch (loginStatus)
{
    case UserLoginStatus.LOGIN_SUCCESS:
        resultText = "OK";
        break;
    case UserLoginStatus.LOGIN_FAILURE:
        resultText = "Failure";
        break;
    case UserLoginStatus.LOGIN_USERLOCKEDOUT:
        resultText = "Locked out";
        break;
    case UserLoginStatus.LOGIN_USERNOTAPPROVED:
        resultText = "Not approved";
        break;
    default:
        resultText = "Unknown error";
        break;
}

老实说,更简单的解决方案是直接传递用户名&密码作为基本身份验证,使用[DnnAuthorize]属性可以验证用户是您想要的用户,然后您可以使用UserController.GetCurrentUser()来获取登录用户。