将我自己的登录信息添加到Umbraco

时间:2017-01-26 15:23:32

标签: c# asp.net-identity asp.net-membership umbraco7

我使用Umbraco 7并希望将我自己的系统登录工具集成到Umbraco 7(WinForms而不是MVC)中,但同时使用当前的Umbraco登录工具,允许管理员照常登录Umbraco并进行更改。

当我说自己的系统时,我指的是我们创建的包含用户帐户的网站,当他们注册时(这是使用.Net 2.0构建的)。

我搜索过Umbraco,所有人似乎都紧密地融合在一起,想知道是否有人有办法实现这一目标?

2 个答案:

答案 0 :(得分:0)

有很多方法可以自定义Umbraco内置的MemberShip,请在此处详细了解:http://24days.in/umbraco-cms/2015/extending-membership/

尽管如此,根据您的问题,您想要对Umbraco中的用户而不是会员进行更改。

就我而言,"用户" Umbraco非常紧密地集成在一起,但是,你可以使用UserService。点击此处了解更多信息:http://programystic.com/code/umbraco/create-a-new-umbraco-user-programmatically-on-startup-when-locked-out/

从技术上讲,您可以确保WinForms用户始终与您的Umbraco用户保持同步。当您对WinForms用户进行更新时,请确保WinForms调用Umbraco站点上的API,该API将数据与Umbraco用户同步。

这可能不是理想的解决方案,但它可以作为一种解决方法。

答案 1 :(得分:0)

我编写了一个ActiveDirectory解决方案,更改了:Umbraco.Web \ Security \ WebSecurity.cs,您可以使用从主机获得的任何内容。我使用ActiveDirectory身份验证。我为会员和用户开发了HybridMembershipProvider。它的Umbraco 7.5.5。,对于ActiveDirectory,您需要更改提供程序中的密码检查,因为ActiveDirectory中的密码检查委托给Windows。

/// <summary>
/// Ensures that a back office user is logged in
/// </summary>
/// <returns></returns>
public bool IsAuthenticated()
{
    bool isAuthenticated = false;

    if (_httpContext.User.Identity.IsAuthenticated)
    {
        // user is already authenticated in umbraco.
        if (_httpContext.GetCurrentIdentity(false) != null)
            isAuthenticated = true;

        // check user in umbraco, and if found set as authenticated.
        else
        {
            // active directory username.
            var userName = _httpContext.User.Identity.Name.Replace("MOD\\", string.Empty);
            var result = SignInManager.PasswordSignInAsync(userName, string.Empty, isPersistent: true, shouldLockout: true).Result;
            if (result == SignInStatus.Success)
            {
                // log this user in backoffice.
                var user = GetBackOfficeUser(_httpContext.User.Identity.Name.Replace("MOD\\", string.Empty));
                PerformLogin(user.Id);

                // and set as authenticated.
                isAuthenticated = true;
            }
        }
    }

    //return _httpContext.User.Identity.IsAuthenticated && _httpContext.GetCurrentIdentity(false) != null;
    return isAuthenticated;
}