gpt4 book ai didi

未在 Safari 中设置 ASP.NET 表单例份验证 Cookie

转载 作者:行者123 更新时间:2023-12-04 05:39:21 25 4
gpt4 key购买 nike

我有一个 ASP.NET Web 服务,它公开了一个名为 DoLogin 的方法

[WebService(Namespace = "http://rtns.ism.ec/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class UserManagerService : WebServiceBase
{

[WebMethod(EnableSession=true)]
[ScriptMethod]
public ResponseBase<bool> DoLogin(LoginCredentials Credentials)
{
Credentials.IpAddress = HttpContext.Current.Request.UserHostAddress;
Credentials.ServerID = Environment.MachineName;
Credentials.SystemID = WebConfigurationManager.AppSettings["SYSTEM_ID"];
Credentials.UserAgent = HttpContext.Current.Request.UserAgent;

try
{
DataResponse<User> resp = UserManager.LoginUser(Credentials);

if (resp.Code)
{
FormsAuthentication.SetAuthCookie(Credentials.Email, true);
HttpContext.Current.Session.Add(Constants.Identifiers.USER_SESSION_INFO_IDENTIFIER, resp.Data);
}
return resp;
}
catch (Exception _ex)
{
ISM.Essentials.Business.LogManager.SaveLog(_ex);
return new ResponseBase<bool> { Message = MessageManager.Instance[Constants.Messages.E_GENERIC_FAILURE, Credentials.CultureID] };
}
}

}

我有一个 JQuery 客户端,它进行调用:
function loginSubmitHandler() {

var objeto = {
Email: $('#txtUser').val(),
Password: $('#txtPassword').val(),
CultureID: $('#hddCulture').val()
};

utils.startAjaxCall('../Services/UserManagerService.asmx/DoLogin', { Credentials: objeto }, function(data) {

if (data.d.Code) {
window.location.replace('home.aspx');
}
else
{
utils.alert(locals.Information, locals.Accept, data.d.Message);
}
});

return false;
}

当我使用不正确的凭据登录时,会出现带有从服务器发送的消息的警报。如果我提供正确的凭据,页面将重定向到 home.aspx

此代码在以下浏览器中运行 100%:
  • IE6、7、8、9
  • Mozilla
  • IE9 Windows Phone
  • Android 2.3 浏览器
  • 适用于 Windows 的 Safari 5.1

  • 我刚刚拥有一台 Mac(有史以来第一次),当我尝试访问我的网站时,我注意到了一个奇怪的行为。我提供了正确的登录凭据,我被重定向到主页,但 FormsAuthentication 机制重定向回登录页面。

    似乎只是忽略了从服务器返回的 Auth cookie。

    这不是跨域 cookie 的问题,因为我在同一个 web 应用程序/域中调用 web 服务器。

    关于如何让 Mac 版 Safari 接受 Ajax Web 服务调用中返回的 cookie 的任何想法?

    最佳答案

    问题可能是 safari 不会设置非 ASCII 字符的 cookie。尝试对 cookie 值使用 encodeURIComponent() 函数。这是一个有类似问题的链接:
    Strange problem with cookies in Safari and Asp.net

    关于未在 Safari 中设置 ASP.NET 表单例份验证 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11461334/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com