0

看来我没有很好地表达我的问题,所以我将其添加为补充标题:如何扩展 FormsAuthentication 类以便我可以覆盖配置文件中的默认行为(例如,将执行控制权传递给 MembershipProvider在新页面请求上更新 MembershipUser 的 LastActivity),如果失败了,用我自己的自定义类替换 FormsAuthentication 类的机制,并将其用作通常使用的 FormsAuthentication 类?

我们如何实现一个不那么可笑、更可扩展的 FormsAuthentication 框架,让我们能够集成到自定义的 MembershipProvider 中?有没有这方面的工作?最终,我想在我的 web.config 中加入如下内容:

<authentication mode="Forms">
    <forms membershipProvider="MyCustomMembershipProvider">
        <events>
            <add event="AuthenticatedRequest" action="OnAuthRequest" />
            <add event="UnAuthenticatedRequest" action="OnRequest" />
            <add event="UnAuthorizedRequest" action="UnAuthRequest" />
        </events>
    </forms>
</authentication>

这不应该占用我所有的时间。表单身份验证在 ASP.NET 页面生命周期中似乎相当低级,但必须有一种方法可以彻底规避它。

这与自定义成员资格提供程序无关。我想在我的会员提供者类中实现一些东西,比如隐含的“IsOnline”和“LastActivity”功能,但是 FormsAuthentication 设置了 cookie 并且不会回头。我想在检查该 cookie 时注入我自己的代码,但我不能。除了把我自己的饼干放在上面之外,肯定还有别的办法。

4

2 回答 2

1

根据您的更新,您可以创建一个自定义成员资格提供程序,如从SqlMembershipProvider继承的链接问题中所述,覆盖您要更改的任何功能。

您是正确的,因为表单身份验证只是创建了一个 cookie;这就是它要做的全部 - 帮助您的应用程序确定您的用户是否已登录。成员资格部分告诉您 IsOnline 和 LastActivity 以及其他用户信息。

如果您可以让我们知道您希望覆盖哪些会员功能,我们可以尝试提供帮助,因为您尚未向我们提供足够的详细信息。

于 2011-11-08T20:40:17.013 回答
1

不,它不是那样工作的。成员资格提供程序不会收到经过身份验证的请求或未经身份验证的请求。事实上,它与身份验证关系不大。这是由安全框架处理的。会员资格仅用作验证某人的用户名和密码的手段。而已。您可以将 Membership 视为安全框架用来对用户进行身份验证的数据存储,但它本身并不管理身份验证。

这篇文章可能是您正在寻找的内容:

http://www.asp.net/security/tutorials/forms-authentication-configuration-and-advanced-topics-cs

于 2011-11-08T20:42:47.470 回答