2016-11-04 4 views
0

Я создаю простой веб-сервис для DotNetNuke 7, который позволит iOS или Android-приложению аутентифицировать пользователя на нашем веб-сайте, чтобы убедиться, что он является участником, и поэтому разрешено просматривать ограниченный контент на приложение.Зайти на сайт DotNetNuke удаленно

У меня есть тестовый веб-сервис, который отвечает на анонимные подключения. Как я могу заставить его войти на сайт и получить данные обратно (например, роли и контактную информацию)?

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 
    } 
} 

Я смотрел онлайн на некоторое время теперь, и большинство ответов, кажется, относятся к возможности annonymous доступа и фактически не проходит проверку подлинности пользователя.

ответ

1

Для получения информации о пользователе вам не нужно вводить данные. Хотя я не уверен, что регистрация частично работает с веб-сервисом.

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; 
} 
+0

Часть входа в систему - убедиться, что пользователь находится в группе участников группы. Идея состоит в том, что они вводят свои учетные данные для входа в веб-приложение, приложение передает это на веб-сервис, веб-сервис пытается войти на веб-сайт, а затем проверяет, что пользователь действительно является «членом», и поэтому ему разрешен доступ к дальнейшему контенту. – Ryan

+0

Обновлен мой ответ. Теперь вы можете обрабатывать результаты попытки входа в систему – VDWWD

+0

А, круто. Думаю, я мог бы обработать попытку входа в систему, и если удастся выполнить «анонимный» запрос для роли, связанной с этим компилятором userID/portalID? – Ryan

1

Честно говоря, простое решение было бы просто передать пароль имя пользователя & в качестве базовой аутентификации, используя атрибут [DnnAuthorize], вы можете подтвердить, что пользователь тот, который вы хотите, и затем вы можете использовать UserController.GetCurrentUser(), чтобы получить зарегистрированного пользователя.

+0

Итак, в моем приложении у меня небольшая форма, в которой пользователь вводит имя пользователя и пароль DNN, а затем отправляется в JSON в webservice ... что будет дальше? – Ryan