【问题标题】:ASP.NET Authenticate Using [Authorize]ASP.NET 使用 [Authorize] 进行身份验证
【发布时间】:2008-11-30 17:36:39
【问题描述】:

我使用 [Authorize] 属性定义了一个控制器来强制进行身份验证。当会话超时时,请求仍然被传递并执行,而不是强制重定向。

我确实使用 FormsAuthentication 来登录和注销用户。

关于如何控制它的任何想法?

例子:

[Authorize]
public class ProjectsController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

【问题讨论】:

  • 我本来打算单独问这个问题,但是既然我们在这里,ASP.NET MVC 是否具有内置的身份验证功能?提前致谢。
  • 在一个快速而肮脏的测试中,这对我来说效果很好。您可以发布您的 Web.Config 文件吗?
  • 我的 web.config 是开箱即用的标准配置,只需添加以下内容:

标签: .net asp.net-mvc


【解决方案1】:

同样,ASP.NET MVC 构建在传统 ASP.NET 之上。是的,有一个“内置的身份验证机制”......它与传统 ASP.NET 使用的完全相同相同的 Membership API。

意思是……这里有别的问题。也许你打开了滑动会话......或者超时时间比你想象的要高,等等。

【讨论】:

  • 我不得不关闭滑动会话,它似乎解决了它。
【解决方案2】:

跟踪用户会话 ASP.NET 使用 ASP.NET_SessionId cookie。为了跟踪经过身份验证的用户,ASP.NET 使用 ASPXAUTH cookie(默认情况下)。

当会话超时时,ASP.NET_SessionId cookie 可能不再由客户端发送,但 ASPXAUTH cookie 仍会发送,这或许可以解释为何呈现您的操作.

要覆盖默认表单身份验证值,您可以查看here。我还建议您使用 firebug 扩展来查看客户端发送的确切 cookie。

【讨论】:

    【解决方案3】:

    根据您的其他question,我猜您根本不会使用此控制器。

    【讨论】:

    • 我进入了控制器,但我被困在 Index 方法中,所以我不能将相同的控制器用于其他方法,因为它们都回发到 Index 方法。示例:像 /projects/edit/1 这样的路径会将表单发布到 ProjectController 方法 Index()
    • 听起来您的页面上的表单中有一个表单,或者路由设置错误。您可以从相关页面发布您的路线和视图源吗?
    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2011-06-27
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    相关资源
    最近更新 更多