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

如何在Episerver定时任务中获取管理员登录详细信息?

在Episerver定时任务中获取管理员详细信息的方法

在Episerver里要获取登录管理员的邮箱、ID等详细信息,仅靠PrincipalInfo.CurrentPrincipal.Identity.Name只能拿到用户名,得借助Episerver的用户管理服务查询完整用户对象,具体分两种版本场景:

针对Episerver CMS 12+(ASP.NET Core)

  1. 注入依赖:在定时任务类中注入UserManager<IdentityUser>服务。
  2. 查询用户详情:通过用户名从UserManager中获取完整用户对象,示例代码:
using EPiServer.Security;
using Microsoft.AspNetCore.Identity;

public class YourScheduledJob
{
    private readonly UserManager<IdentityUser> _userManager;

    public YourScheduledJob(UserManager<IdentityUser> userManager)
    {
        _userManager = userManager;
    }

    public async Task ExecuteAsync()
    {
        var currentUserName = PrincipalInfo.CurrentPrincipal.Identity.Name;
        if (!string.IsNullOrEmpty(currentUserName))
        {
            var user = await _userManager.FindByNameAsync(currentUserName);
            if (user != null)
            {
                var userId = user.Id;
                var email = user.Email;
                var displayName = await _userManager.GetDisplayNameAsync(user);
                // 这里可获取并使用其他用户属性
            }
        }
    }
}

针对Episerver CMS 11及更早版本(.NET Framework)

  1. 注入依赖:注入IUserRepository服务。
  2. 查询用户详情:通过用户名获取User对象,示例代码:
using EPiServer.Security;
using EPiServer.ServiceLocation;

public class YourScheduledJob
{
    private readonly IUserRepository _userRepository;

    public YourScheduledJob()
    {
        _userRepository = ServiceLocator.Current.GetInstance<IUserRepository>();
    }

    public string Execute()
    {
        var currentUserName = PrincipalInfo.CurrentPrincipal.Identity.Name;
        if (!string.IsNullOrEmpty(currentUserName))
        {
            var user = _userRepository.FindUsersByUserName(currentUserName).FirstOrDefault();
            if (user != null)
            {
                var userId = user.ID;
                var email = user.Email;
                var displayName = user.DisplayName;
                // 处理后续业务逻辑
            }
        }
        return "任务执行完成";
    }
}

注意事项

  • 确保定时任务运行时存在有效用户上下文,部分后台定时任务可能无当前登录用户,这种情况可通过PrincipalInfo.SwitchPrincipal切换到指定管理员身份后再执行逻辑。
  • 若需自定义用户属性,可通过扩展IdentityUser(CMS12+)或User(旧版本)添加字段,再通过对应服务获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:50:39