【问题标题】:MVC4 Membership: How do I notify membership provider on logout?MVC4 会员资格:如何在注销时通知会员资格提供者?
【发布时间】:2025-12-27 13:20:14
【问题描述】:

我使用 VS2012“Internet 应用程序”模板创建了一个非常基本的 MVC 4 站点,并且我正在尝试实现一个自定义 MembershipProvider 类。

登录时,模板代码调用 WebSecurity.Login(...) 最终调用我的提供程序 ValidateUser 方法。

在注销时,模板代码调用 WebSecurity.Logout() 但据我所知,这不会调用我的会员提供程序上的任何方法。

我需要找到一种方法来通知我的身份验证后端用户已注销。

  • WebSecurity.Logout 到底是做什么的?
  • 我应该如何通知会员提供商用户已注销?

【问题讨论】:

    标签: asp.net-mvc-4 membership-provider membership


    【解决方案1】:
    • WebSecurity.Logout 到底是做什么的?

    它调用FormsAuthentication 类上的SignOut 方法来删​​除表单身份验证cookie。

    • 我应该如何通知会员提供商用户已注销?

    会员资格提供者不负责了解用户是否已登录。您应该在控制器操作上使用[Authorize] 属性或调用User.IsInRole("someRole") 来测试当前用户是否经过身份验证。

    【讨论】:

    • 身份验证后端需要知道会话是否处于活动状态,以跟踪谁登录以用于许可和消息传递目的。我曾希望将所有对后端的调用捆绑到会员提供程序类中,但看起来我需要直接调用后端 API。