【发布时间】:2010-10-08 09:42:48
【问题描述】:
我正在尝试在 ASP.NET MVC 中实现注销功能。
我为我的项目使用表单身份验证。
这是我的注销代码:
FormsAuthentication.SignOut();
Response.Cookies.Clear();
FormsAuthenticationTicket ticket =
new FormsAuthenticationTicket(
1,
FormsAuthentication.FormsCookieName,
DateTime.Today.AddYears(-1),
DateTime.Today.AddYears(-2),
true,
string.Empty);
Response.Cookies[FormsAuthentication.FormsCookieName].Value =
FormsAuthentication.Encrypt(ticket);
Response.Cookies[FormsAuthentication.FormsCookieName].Expires =
DateTime.Today.AddYears(-2);
return Redirect("LogOn");
此代码将用户重定向到登录屏幕。但是,如果我通过在地址栏中指定名称来调用操作方法(或从地址栏下拉菜单中选择上一个链接),我仍然能够在不登录的情况下访问安全页面。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
你为什么不使用 FormsAuthentication.SignOut() ?
-
@Aliostad : 现在更改了源代码,之前方法调用被包装了。
-
@vijaysylvester - 您能否详细介绍一下您是如何确保安全网页的安全的?
-
我已在 Web.Config 中将它们配置为拒绝未经身份验证的用户访问。
-
@vijaysylver - 你的问题。这不是 Web 表单,这是 MVC。 Venemo 的答案是正确的——你需要用授权来装饰动作方法。我敢打赌,即使您没有登录,您也可以访问任何安全页面。
标签: c# .net asp.net asp.net-mvc forms-authentication