2017-01-26 58 views
1

即时通讯使用Umbraco 7,并希望将我自己的系统登录设施集成到Umbraco 7(WinForms而不是MVC)中,但同时使用当前的Umbraco登录功能,以允许管理员工像平常一样登录进入Umbraco并进行更改。添加我自己的登录到Umbraco

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

我搜索了Umbraco,所以似乎都紧密集成并想知道是否有人有办法实现这一目标?

回答

0

有很多方法来定制一把umbraco内置的会员卡,阅读更多有关在这里: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,以便与Umbraco用户同步数据。

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

+0

我会研究这些链接。我想要做的是使用我们自己的外部用户登录系统的实现,并为内部用户使用Umbracos。总之,即时通讯试图将两个系统集成为一个 – Computer

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; 
} 
+0

我似乎没有访问Umbraco.Web \ Security \ WebSecurity.cs - 你在哪里可以访问这个文件?我注意到你的代码返回_httpContext.User.Identity,但我想覆盖这个并使用我自己的实现(也许通过重写global.asax文件) – Computer