远程登录 DotNetNuke 站点
Log into DotNetNuke site remotely
我正在为 DotNetNuke 7 创建一个简单的 Web 服务,它将允许 iOS 或 Android 应用程序对我们网站的用户进行身份验证,以确保他们是会员并因此被允许在应用程序上查看受限制的内容。
我有一个响应匿名连接的测试网络服务 运行。我如何真正让它登录网站并检索数据(如角色和联系信息)?
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
}
}
我在网上看了一段时间,大多数答案似乎都与允许匿名访问有关,而不是真正对用户进行身份验证。
您无需登录即可获取用户信息。虽然我不确定登录部分是否可以通过 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 () 获取登录用户。
我正在为 DotNetNuke 7 创建一个简单的 Web 服务,它将允许 iOS 或 Android 应用程序对我们网站的用户进行身份验证,以确保他们是会员并因此被允许在应用程序上查看受限制的内容。
我有一个响应匿名连接的测试网络服务 运行。我如何真正让它登录网站并检索数据(如角色和联系信息)?
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
}
}
我在网上看了一段时间,大多数答案似乎都与允许匿名访问有关,而不是真正对用户进行身份验证。
您无需登录即可获取用户信息。虽然我不确定登录部分是否可以通过 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 () 获取登录用户。