2013-04-09 22 views
0

我們有一個網頁,大量使用網址中的散列來表示用戶當前正在查看的彈出窗口。我們正試圖設置它,所以如果用戶點擊一個按鈕,它們會顯示一個登錄表單,它將登錄並重新載入它們所在的確切頁面(包括#!)。如何通過ashx將用戶登錄到DotNetNuke?

我決定通過AJAX要做到這一點,通過在登錄彈出一個標準的形式,並用下面的代碼扳平點擊按鈕,一個AJAX調用一個ASHX:

public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "application/json"; 

     var username = context.Request["username"]; 
     var password = context.Request["password"]; 
     var portalSettings = PortalSettings.Current; 
     var ip = GetIpAddress(context.Request); 
     var loginStatus = UserLoginStatus.LOGIN_FAILURE; 

     var result = UserController.ValidateUser(portalSettings.PortalId, username, password, string.Empty, 
            portalSettings.PortalName, ip, ref loginStatus); 

     if (loginStatus == UserLoginStatus.LOGIN_SUCCESS || loginStatus == UserLoginStatus.LOGIN_SUPERUSER) 
     { 
      FormsAuthentication.SetAuthCookie(result.UserID.ToString(), true); 
      context.Response.Write(JsonConvert.SerializeObject(new { Result = true})); 
     } 
     else 
     { 
      context.Response.Write(JsonConvert.SerializeObject(new { Result = false })); 
     } 
    } 

這似乎是工作事實上,當我通過portalId,用戶名和密碼(通過瀏覽器url調用)時,它會帶回LoginStatus.LOGIN_SUPERUSER的結果。據小提琴手,在JSON與下列cookie頭返回:

Set-Cookie: .DOTNETNUKE=5E48DC014F447BA2ED6ADFA09138D3E089B52E3A6ECFAD0AE45B7EB94842B48EE84529F92F34B1ABE7D1BBF580F3AF91446ED70177EF967588D0518802C397AD5831CA941CDF15F9C625075E9F2403A743B20AFC380E01DBE6383587E06D85D61A6485FA; expires=Tue 

但是,一旦我瀏覽到我的主頁上的web服務器登錄我出去似乎併發送下列cookie頭回:Set-Cookie: .DOTNETNUKE=; expires=Tue, 12-Oct-1999 04:00:00 GMT; path=/; HttpOnly

我已驗證PortalSettings.Current正指向正確的門戶網站。

如何堅持登錄?

回答

1

原來我錯誤地使用了UserController.ValidateUser()而不是UserControll.UserLogin()

相關問題