【问题标题】:Get current user in Umbraco version 7.3.5在 Umbraco 版本 7.3.5 中获取当前用户
【发布时间】:2016-02-15 02:51:33
【问题描述】:

我正在尝试访问已登录的 Umbraco 用户,而不是会员,但我无法正常工作。

我尝试了以下方法,但都不起作用,它们都返回 null:

umbraco.BusinessLogic.User.GetCurrent()
UmbracoContext.UmbracoUser
UmbracoContext.Security.CurrentUser
umbraco.helper.GetCurrentUmbracoUser()

我可以使用以下代码访问用户,例如姓名:

UmbracoContext.Application.Services.UserService.GetByEmail("name@company.com").Name

我已经尝试以用户和成员身份登录此代码,只有用户,只有成员并且根本没有登录,它总是返回相同的结果,null。

我已经尝试了 SurfaceController 和 UmbracoApiController 中的代码,结果相同。使用Membership.GetUser(); 获取登录会员没有问题 有其他人遇到过这种情况吗?

使用:Umbraco 版本 7.3.5 程序集:1.0.5858.25602

【问题讨论】:

    标签: c# asp.net asp.net-web-api umbraco


    【解决方案1】:

    是的,我之前尝试过以多种方式访问​​当前后端用户,但发现唯一的方法是:

    var userTicket = new System.Web.HttpContextWrapper(System.Web.HttpContext.Current).GetUmbracoAuthTicket();
    if (userTicket != null)
    {
        var currentUser = ApplicationContext.Services.UserService.GetByUsername(userTicket.Name);
    }
    

    【讨论】:

    • 只进行了一次小修改就完美无缺。 Current 似乎已被替换,所以现在我只使用了“var currentUser = ApplicationContext.Services.UserService.GetByUsername(userTicket.Name);”
    • 啊奇怪,它在 7.3.6 中对我有用。但很高兴它有帮助!刚刚在 7.3.6 上检查了您的版本,它也可以正常工作,因此我批准了该修改。
    【解决方案2】:

    我昨天刚刚实现了一些代码来获取当前用户,使用:

    UmbracoContext.Current.Security.CurrentUser
    

    这不是您尝试过的选项之一吗?

    【讨论】:

    • 也试过了,但由于某种原因,我没有得到 UmbracoContext 的 Current。我得到的错误是:“不能使用实例引用访问'UmbracoContext.Current';改为使用类型名称对其进行限定”。我没有尝试新的或类似的东西,当我在即时窗口中尝试时也会收到此错误。
    • 你的 UmbracoContext 来自哪个命名空间?
    • @ProNotion 您会在命名空间 Umbraco.Web 中找到 UmbracoContext,查看our.umbraco.com/apidocs/csharp/api/… 了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2021-10-24
    • 2017-03-17
    • 2014-01-27
    • 2014-05-03
    相关资源
    最近更新 更多