- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将用户名添加到 cookie 并在注销时清除它,但是 Request.IsAuthenticated
总是返回 true 所以我无法知道它是否是下一页上的成员.
这是我正在尝试的:
public void Logout()
{
FormsAuthentication.SignOut();
Session.Abandon(); // trying everything...
}
protected void signin_submit_Click(object sender, EventArgs e)
{
//checklogins...
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username_top.Text, true);
}
我正在单击从 javascript 函数注销,它会触发调试器,所以我确定它被调用了。
我正在检查 Page_Load
上的值:
protected void Page_Load(object sender, EventArgs e)
{
bool isAuth = Request.IsAuthenticated; // always true !!!
if (isAuth)
{
registeredDiv.Visible = true;
guestDiv.Visible = false;
}
}
我错过了什么?我如何知道用户是否已登录?
编辑:我发现 authenticationMode
在 web.config 中设置为 Windows。
编辑为:
<authentication mode="Forms">
但现在它总是返回 false。我尝试在登录到同一页面后重定向,但仍然没有用。有什么想法吗?
最佳答案
当您说您正在使用调试器并通过 Javascript 进行调用时,您是通过 ajax 进行的吗?我想知道您确实在注销,但没有重定向用户,这意味着用户在那里机器上的 cookie 没有被覆盖/销毁,这样当他们下次请求页面时,它会再次工作,因为 cookie 仍然存在存在。
当用户点击您网站上的注销按钮时,您确实需要让他们重定向到新页面,以便可以正确设置(或取消设置)cookie...这是 MSDN Article on Forms Authentication Signout其示例代码调用 RedirectToLoginPage()
,它将如前所述对 cookie 进行分类。
我找到了 FireCookie for Firebug对调试与 cookie 相关的问题非常有帮助。
编辑
根据我链接到的 MSDN 文章:
You can use the SignOut method in conjunction with the RedirectToLoginPage method to log one user out and allow a different user to log in.
您的代码没有调用 RedirectToLoginPage
,因此仅调用 FormsAuthentication.SignOut()
是不够的(除非您要手动完成 RedirectToLoginPage 的工作)
编辑2
也许更改您的登录按钮代码以改为使用此功能:
FormsAuthentication.RedirectFromLoginPage(username_top.Text, true)
因为这会自动处理所有 cookie 的设置...
编辑 3
很高兴你解决了这个问题,上面的功能(编辑 2)会完成你所说的你错过的事情(将 cookie 添加到响应中)......
关于asp.net - Request.IsAuthenticated 始终为真。我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964347/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!