使用 Android 浏览器进行 ASP.NET 表单身份验证

发布于 2024-10-01 17:22:29 字数 965 浏览 2 评论 0原文

我正在以一种简单的方式使用 ASP.NET 表单身份验证。身份验证使用 cookie 来存储凭据。

在以下浏览器中完美运行: 桌面:Chrome、Safari、IE... 移动设备:iPhone 浏览器、Opera Mobile ...

我按下按钮表单的身份验证,然后重定向到应用程序页面。

但是,在 Android 浏览器中,我按下按钮却什么也没发生。

ASP.NET 表单身份验证的配置很简单:

<authentication mode="Forms">
 <forms loginUrl="MLogin.aspx"
     timeout="30"
     name=".MOBAUTH"
     path="/"
     defaultUrl="Main.aspx"
     cookieless="AutoDetect">
  <credentials passwordFormat="Clear">
   <user name="dev" password="123456"/>
  </credentials>
 </forms>
</authentication>
<authorization>
 <deny users="?" />
</authorization>

有人知道会发生什么吗?

补充...

MLogin.aspx 使用一种简单的方法来验证用户身份:

private void authenticate()
{
    if (FormsAuthentication.Authenticate("dev", this.txtPass.Text.Trim()))
        FormsAuthentication.RedirectFromLoginPage("dev", true);

    Response.End();
}

I'm using ASP.NET Forms Authentication with a simple way. The authentication use a cookie for store the credentials.

Works perfectly in browsers like:
Desktop: Chrome, Safari, IE, ...
Mobile: iPhone Browser, Opera Mobile ...

I press the button form's authentication and i redirect to the app page.

BUT, in Android browser i press the button and nothing.

The configuration of ASP.NET Forms Authentication is simple:

<authentication mode="Forms">
 <forms loginUrl="MLogin.aspx"
     timeout="30"
     name=".MOBAUTH"
     path="/"
     defaultUrl="Main.aspx"
     cookieless="AutoDetect">
  <credentials passwordFormat="Clear">
   <user name="dev" password="123456"/>
  </credentials>
 </forms>
</authentication>
<authorization>
 <deny users="?" />
</authorization>

Does anyone have any idea what might be happening?

Complementing...

MLogin.aspx use a simple method for authenticate the user:

private void authenticate()
{
    if (FormsAuthentication.Authenticate("dev", this.txtPass.Text.Trim()))
        FormsAuthentication.RedirectFromLoginPage("dev", true);

    Response.End();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-10-08 17:22:29

原因是 Response.End()。该函数会过早地终止您的数据流。根本没有必要。

不同的浏览器以不同的方式处理 Response.End()。即使您结束了流,有些也会呈现页面,而有些则不会呈现它。

The reason is the Response.End(). That function prematurely kills your stream of data. There is no need for it at all.

Different browsers handle the Response.End() in different ways. Some will render the page even though you ended the stream, and some will not render it.

各空 2024-10-08 17:22:29

检查响应的 Set-Cookie 标头字段中的“expires”参数,并确保您的手机设置为正确的时间和时间。日期。如果浏览器认为 cookie 已经过期,则不会存储它。

Check the "expires" parameter in the response's Set-Cookie header field, and make sure your phone is set to the correct time & date. If the browser thinks the cookie is already past its expiry date, it won't store it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文