使用 Android 浏览器进行 ASP.NET 表单身份验证
我正在以一种简单的方式使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原因是 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.
检查响应的 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.