2016-11-04 8 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에서 웹 서비스로 전송됩니다. 다음에 어떻게됩니까? – Ryan