【问题标题】:Call a local C# webservice from ajax , 401 error Unauthorized从 ajax 调用本地 C# web 服务,401 错误未经授权
【发布时间】:2013-02-26 15:43:06
【问题描述】:

我对 ajax 调用的登录函数有疑问,这是该函数的代码,它是一个 Web 服务 可见

[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来称呼它

$.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 并显示错误,但如果该函数找到用户,则会收到 401 错误 Unauthorized。

编辑: 经过几次搜索,问题出在这条线上!

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

【问题讨论】:

    标签: c# jquery ajax web-services unauthorized


    【解决方案1】:

    乍一看,经过身份验证的用户似乎对 ReturnURL(或默认 URL)指定的页面没有适当的权限。

    【讨论】:

      【解决方案2】:

      通过允许对 web 服务的公共访问解决了问题,在通过 web.config 运行安全模型时默认拒绝它 谢谢大家。

      【讨论】:

        猜你喜欢
        • 2017-02-23
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2011-09-14
        相关资源
        最近更新 更多