You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Umbraco 13:如何判断当前会员是否属于指定会员组?

在Umbraco 13中判断当前会员是否属于特定会员组

你没看错,Umbraco 13的Member实体确实没有内置的IsInRole方法,官方将会员组的查询逻辑集中放在了IMemberService中。

如果你想在模板里实现这个判断,有两种常用的便捷方式:

  • 直接在模板中调用IMemberService
    先注入服务,再通过会员ID获取所有组并判断:

    @inject IMemberService MemberService
    @{
        var currentMember = Members.GetCurrentMember();
        if (currentMember != null)
        {
            var memberGroups = MemberService.GetAllRoles(currentMember.Id);
            var isInTargetGroup = memberGroups.Contains("myGroup");
            if (isInTargetGroup)
            {
                <!-- 这里放置仅对目标会员组展示的内容 -->
            }
        }
    }
    
  • 扩展Member类添加自定义IsInRole方法
    先在项目中创建一个扩展类,封装判断逻辑:

    using Umbraco.Cms.Core.Models.Membership;
    using Umbraco.Cms.Core.Services;
    
    public static class MemberExtensions
    {
        public static bool IsInRole(this IMember member, string groupName, IMemberService memberService)
        {
            if (member == null || string.IsNullOrWhiteSpace(groupName))
                return false;
            var groups = memberService.GetAllRoles(member.Id);
            return groups.Contains(groupName);
        }
    }
    

    之后在模板里就能像你最初期望的那样简洁调用:

    @inject IMemberService MemberService
    @{
        var currentMember = Members.GetCurrentMember();
        if (currentMember?.IsInRole("myGroup", MemberService) == true)
        {
            <!-- 这里放置仅对目标会员组展示的内容 -->
        }
    }
    

如果项目更偏向分层设计,也可以把这个判断逻辑放在视图组件(ViewComponent)中,在组件里注入IMemberService完成校验后,再渲染对应的内容视图,这样模板会更干净。

内容的提问来源于stack exchange,提问作者jessiebot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:43:17