2016-11-04 113 views
0

我正在爲DotNetNuke 7創建一個簡單的Web服務,它將允許iOS或Android應用程序通過我們的網站對用戶進行身份驗證,以確保他們是會員並允許查看受限制的內容應用程序。遠程登錄到DotNetNuke網站

我有一個測試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 
    } 
} 

我現在已經在網上找了一段時間,最答案似乎都與允許annonymous訪問,而不是真正對用戶進行認證。

回答

1

您無需登錄即可獲取用戶信息。雖然我不確定部分日誌記錄是否可以從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; 
} 
+0

登錄部分是爲了確保用戶在角色組'member'中。他們的想法是,他們在應用程序中輸入了他們的網站登錄憑證,應用程序將其傳遞到Web服務上,Web服務嘗試登錄網站,然後驗證用戶確實是「會員」,因此被允許訪問更多內容。 – Ryan

+0

更新了我的答案。你現在可以處理登錄嘗試的結果 – VDWWD

+0

啊,很酷。我想我可以處理登錄嘗試,如果成功,對與該用戶ID/portalID組合相關的角色執行「匿名」請求? – Ryan

1

說實話,更容易的解決辦法是簡單地傳遞用戶名&密碼作爲基本的身份驗證,使用[DnnAuthorize]屬性可以驗證用戶是否是您想要的用戶,然後可以使用UserController.GetCurrentUser()獲取登錄用戶。

+0

因此,在我的應用程序中,我有一個小表單,用戶輸入他們的DNN用戶名和密碼,然後以JSON形式發送給webservice ...接下來會發生什麼? – Ryan