RoleManagerModule 和 RolePrincipal 对象

发布于 2024-07-20 03:24:30 字数 788 浏览 5 评论 0原文

根据我的书,如果启用了角色管理,则 RoleManagerModule 通过将 RolePrincipal 对象分配给 HttpRequest.User 来创建用户的安全上下文。 但是,安全上下文是否已由 FormsAuthenticationModule 创建(因此主体对象被分配给 HttpContext.User ),该安全上下文在 RoleManagerModule 之前被调用叫?

我问这个问题是因为在下面的代码中分配给 HttpRequest.User 的主体对象已经存在,即使尚未调用 RoleManagerModule :

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated && Roles.Enabled)
    {
        //here we subscribe user to a role via Roles.AddUserToRole()
    }       
}

主体对象也是如此由 FormsAuthenticationModule 分配给 HttpRequest.User,然后替换为 RolePrincipal 对象(由 RoleManagerModule 创建)?

According to my book, if role management is enabled, then RoleManagerModule creates the security context of the user by assigning RolePrincipal object to the HttpRequest.User. But isn’t security context already created (thus principal object being assigned to HttpContext.User ) by FormsAuthenticationModule, which is called prior to RoleManagerModule being called?

I’m asking this, because in the following code principal object assigned to HttpRequest.User already exists, even though RoleManagerModule has not yet been called:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated && Roles.Enabled)
    {
        //here we subscribe user to a role via Roles.AddUserToRole()
    }       
}

So is principal object, created by FormsAuthenticationModule and assigned to HttpRequest.User, later replaced by RolePrincipal object (created by RoleManagerModule)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若能看破又如何 2024-07-27 03:24:30

根据这篇文章

如果启用了角色框架,则 RoleManagerModule HTTP 模块将在 FormsAuthenticationModule 之后介入,并在 PostAuthenticateRequest 事件期间识别经过身份验证的用户的角色,该事件在 AuthenticateRequest 事件之后触发。 如果请求来自经过身份验证的用户,则 RoleManagerModule 会覆盖 FormsAuthenticationModule 创建的 GenericPrincipal 对象,并将其替换为 RolePrincipal 对象。 RolePrincipal 类使用 Roles API 来确定用户所属的角色。

所以你是对的。

According to this article:

If the Roles framework is enabled, the RoleManagerModule HTTP Module steps in after the FormsAuthenticationModule and identifies the authenticated user’s roles during the PostAuthenticateRequest event, which fires after the AuthenticateRequest event. If the request is from an authenticated user, the RoleManagerModule overwrites the GenericPrincipal object created by the FormsAuthenticationModule and replaces it with a RolePrincipal object. The RolePrincipal class uses the Roles API to determine what roles the user belongs to.

So you're right.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文