2013-02-26 55 views
0

我有一個由AJAX稱爲登錄功能的問題,這是它的一個web服務 可見呼叫從阿賈克斯本地C#web服務,401錯誤未經授權

[WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 
    public string CheckData(string login, string Pass) 
    { 
     global gb = new global(); 

     if (gb.CheckUserExist(login, Pass)) 
     { 
      System.Web.Security.FormsAuthentication.RedirectFromLoginPage(login, true); 
      HttpCookie cookie = new HttpCookie("userData",login); 
      cookie.Expires = DateTime.Now.AddMonths(2); 
      Mosab2aModel.Mosab2aEntities context = new Mosab2aModel.Mosab2aEntities(); 

      var User = context.Users.Where(x => x.UserName == login && x.Password == Pass) 
       .Select(x => new { x.UserName, x.Password, x.Admin, x.DisplayName, x.FBID }).First(); 

      cookie["UserName"] = User.UserName; 
      cookie["Password"] = User.Password; 
      cookie["isAdmin"] = User.Admin.ToString(); 
      cookie["Name"] = User.DisplayName; 
      cookie["FBID"] = User.FBID; 
      Context.Response.Cookies.Add(cookie); 
      //Context.Response.Redirect("/Default.aspx"); 
      return "1"; 
     } 
     else 
     { 
      return "0"; 
     } 
    } 

我通過調用它的函數的代碼阿賈克斯在這裏

$.ajax({ 
        type: "POST", 
        url: 'LoginService.asmx/CheckData', 
        data: "{'login':'"+ login +"','Pass':'"+pass +"'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
         success: function(msg) 
         { 

          if (msg.d == "1") 
          { 
           //document.location.href = '/Default.aspx'; 
          } 
          else 
          { 
           formWrapper.clearMessages(); 
           displayError('Username or password is incorrect'); 
          } 
         }, 
         error: function() 
         { 
          formWrapper.clearMessages(); 
          displayError('Error in contacting server , try again later.'); 
         } 
        }); 

我有一個奇怪的問題,如果用戶不存在,該功能運作良好,並返回0值和錯誤diplays,但如果功能找到的用戶就得到一個401錯誤未經授權。

編輯: 經過多次搜索問題是與這條線!

System.Web.Security.FormsAuthentication.RedirectFromLoginPage(login, true); 

回答

0

通過允許公衆訪問web服務解決了問題,它通過web.config運行安全模型時默認被拒絕 謝謝大家。

0

就一目瞭然,這樣看來,通過身份驗證的用戶沒有適當的權限由RETURNURL(或默認URL)指定的頁面。