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

Umbraco 7.8.1视图中如何判断用户登录及角色?User.Identity.IsAuthenticated始终返回false

Umbraco 7.8.1:视图中判断用户登录与角色检查方案

嘿,我来帮你解决这个问题——你遇到的User.Identity.IsAuthenticated始终返回false,核心原因是Umbraco的用户体系分为前端会员和后台管理员两种,ASP.NET原生的User.Identity并不适配它的专属认证逻辑,咱们分场景来处理:

一、前端会员(网站注册用户)的判断与角色检查

如果你的需求是判断网站的注册会员是否登录,直接用Umbraco封装的MembershipHelper才是正确姿势:

1. 判断是否登录

在.cshtml视图中,通过MembershipHelper的IsLoggedIn()方法直接判断,比原生方法靠谱得多:

@using Umbraco.Web
@{
    var membershipHelper = Umbraco.MembershipHelper;
}

@if (membershipHelper.IsLoggedIn())
{
    <p>会员已登录,欢迎@membershipHelper.GetCurrentMember().Name!</p>
}
else
{
    <p>请登录会员账号</p>
}

2. 检查会员角色

获取当前会员对象后,用IsInRole()方法判断是否属于指定角色,或者直接获取所有角色:

@{
    var currentMember = membershipHelper.GetCurrentMember();
}

// 检查是否属于"VIP"角色
@if (currentMember.IsInRole("VIP"))
{
    <p>您是VIP会员,可享受专属权益</p>
}

// 列出所有所属角色
<p>您的会员角色:@string.Join(", ", currentMember.Roles)</p>

二、后台管理员/编辑者的判断与角色检查

如果是要判断用户是否登录到Umbraco后台,得用UmbracoContext的安全服务来获取后台用户:

1. 判断后台用户是否登录

通过UmbracoContext.Security.CurrentUser是否为null来判断:

@using Umbraco.Web
@{
    var umbracoContext = UmbracoContext.Current;
    var currentBackOfficeUser = umbracoContext?.Security?.CurrentUser;
}

@if (currentBackOfficeUser != null)
{
    <p>后台用户已登录:@currentBackOfficeUser.Name</p>
}
else
{
    <p>未登录到Umbraco后台</p>
}

2. 检查后台用户组(角色)

后台用户的角色是通过用户组管理的,你可以通过组的Alias来判断权限:

// 检查是否是管理员组(默认Alias为"admin")
@if (currentBackOfficeUser.Groups.Any(g => g.Alias.Equals("admin", StringComparison.OrdinalIgnoreCase)))
{
    <p>您是管理员,拥有最高操作权限</p>
}

// 列出所有所属后台组
<p>您的后台组:@string.Join(", ", currentBackOfficeUser.Groups.Select(g => g.Name))</p>

为什么User.Identity.IsAuthenticated一直返回false?

  • 对于前端会员:Umbraco的会员系统基于ASP.NET Membership但有自己的封装,原生User.Identity不一定能正确识别Umbraco的会员认证状态,用MembershipHelper是官方推荐的方式。
  • 对于后台用户:后台用户的认证Cookie是Umbraco专属的,ASP.NET原生身份系统不会自动关联,所以必须用UmbracoContext的安全服务来判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:10:12