我正在为DotNetNuke 7创建一个简单的web服务,该服务将允许iOS或安卓应用程序使用我们的网站对用户进行身份验证,以确保他们是成员,并允许在应用程序上查看受限内容。
我有一个测试webservice运行,它响应于匿名连接。我如何让它登录到网站并检索回数据(比如角色和联系信息)?
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
}
}我已经上网一段时间了,大多数答案似乎都是关于允许匿名访问,而不是对用户进行实际身份验证。
发布于 2016-11-04 10:34:09
您不需要登录来获取用户信息。虽然我不确定日志在一定程度上是从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;
}发布于 2016-11-04 15:59:40
老实说,更简单的解决方案是简单地传递用户名和密码作为基本身份验证,使用DnnAuthorize属性可以验证用户是否是您想要的用户,然后可以使用UserController.GetCurrentUser()获取登录用户。
https://stackoverflow.com/questions/40418976
复制相似问题