我正在使用asp.net mvc 5并使用自定义表单验证。当我尝试登录时,它会完美登录,但是当我尝试注销时,它会将我重定向到我在webconfig文件中设置的logiurl,这个文件在下面给出。
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="30" />
</authentication>
而不是将我带到Logoff操作方法中定义重定向的页面,如下所示。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logoff()
{
_formsAuth.SignOut();
return RedirectToAction("Index", "Home");
}
在Chrome浏览器中一切正常,但它在firefox中无效。
答案 0 :(得分:0)
这个方法已被弃用,它对测试很有用,我不再使用它了,而是使用我自己定制的已实现模板,在安全方面,客户是第一位的。
话虽如此,我仍然没有回答你使用的类和模型的问题。
使用表单身份验证功能需要调用System.Web.Security.FormsAuthentication类的两个静态方法:
public class FormsAuthProvider : IAuthProvider { public bool Authenticate(string username, string password){ bool result = FormsAuthentication.Authenticate(username, password); if (result) { FormsAuthentication.SetAuthCookie(username, false); } return result; } public class AccountController : Controller { IAuthProvider authProvider; public AccountController(IAuthProvider auth) { authProvider = auth; } public ViewResult Login() { return View(); } [HttpPost] public ActionResult Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { if (authProvider.Authenticate(model.UserName, model.Password)) { return Redirect(returnUrl ?? Url.Action("Index", "Admin")); } else { ModelState.AddModelError("", "Incorrect username or password"); return View(); } } else { return View(); } } }