@if (Request.IsAuthenticated) { <text> 你好,@Html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "管理" })! @Html.ActionLink("注销", "LogOff", "Account") </text> } else { <ul> <li>@Html.ActionLink("注册", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li> <li>@Html.ActionLink("登录", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li> </ul> }
以上是_LoginPartial.cshtml
// POST: /Account/LogOff [HttpPost] [ValidateAntiForgeryToken] public ActionResult LogOff() { WebSecurity.Logout(); return RedirectToAction("Index", "Home"); }
为什么不能实现注销?需要添加LogOff页面吗?
你是用 cookie,还是 session 记录用户的登录信息的。
WebSecurity.Logout(); 没有清理干净吧
是用cookie记录的
怎么看出不能注销?
“/”应用程序中的服务器错误。
无法找到资源。
说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。
请求的 URL: /Account/LogOff
@sidecore:
你的 标签是a 是get提交, 把 [HttpPost] 换成 [HttpGet]
@Qlin: 把 [HttpPost] 换成 [HttpGet]后,现在变成了 500 Internal Server Error
@sidecore:
查看请求的 地址正确的话, 那 你要调试了,看看 哪里有问题 。
@Qlin: 我把[ValidateAntiForgeryToken]去掉,就可以正常注销了。[ValidateAntiForgeryToken]是作什么用的?
你最好自己写一个登陆机制,系统的不是很靠谱
在WebSecurity.Logout();之后,加个Session.Clear(),再试试吧,如果需要记得登陆状态的话,可能系统提示的方式是cookies实现的,你需要在监视一下,看看cookies是否被清除了,如果没有清除,你有动清一下吧!