2014-11-06 54 views
2

我正在開發帶有社區的EPiServer CMS 7 MVC站點。我正在嘗試獲取並顯示成員頭像(頭像物理存在於Contributed文件夾中)。這裏是我的代碼:EPiServer社區成員頭像錯誤

 var user = CurrentUser; 
     var image = user.GetPortraitUri(ImageSize.Huge).ToString(); 

可變圖像獲取價值:

 http://localhost:18000/EPiServerCommunity/Modules/ImageGallery/ImageHandler.ashx?imageId=7&thumbnailId=10 

但在查看我只看到圖像圖標(比如當無法上傳或顯示圖像)。當我試圖在新選項卡中打開此圖像鏈接時,將其重定向到EPiServer登錄頁面。我不明白爲什麼它重定向我登錄頁面,如果用戶被授權。有任何想法嗎?

附加信息: 我安裝了EPiServer使用部署中心的相關站點。在EditProfile用戶控件或MyPage上獲取用戶頭像的方式相同。而當我試圖在新標籤中使用getted Url打開圖像時,我可以看到它。我認爲可以在Web.config文件中有一些權限,但我不知道....

添加新信息(11/10/2014)。這個問題在 部分,我的意思是在EPiServerCommunity部分。當我嘗試打開圖像時,我更改爲拒絕安裝以前的EpiServer Relate站點,而不是獲取登錄頁面。在我的web.config文件中,我將所有拒絕都改爲允許,但是當我嘗試通過url打開圖像時,仍然獲取登錄頁面。我猜Episerver沒有在web.config文件中看到這個部分。

添加新的信息(11/11/2014)。我添加了一個角色「每個人」到部分。我看到,當我試圖打開本地主機:18000 \ episerver它跳過登錄頁面。我將相同的角色「Everyone」添加到EpiServerCommunity部分。現在看來:

<location path="EPiServerCommunity"> 
<system.web> 
    <pages enableViewState="true" /> 
    <authorization> 
    <allow roles="CommunityAdmins,CommunityModerators,Administrators,Everyone" /> 
    <allow users="*" /> 
    </authorization> 
</system.web> 

但我仍然得到登錄頁面,當我試圖通過URL :(

PS這個問題我張貼在EPiServer World開放的形象,但我希望我能在這裏回答更迅速。

回答

1

解決我的問題。EPiServer跳過permitions的位置部分。我創建的類CommunitySecurityModule與事件DefaultSecurity_CreatedUserMyPageHandler_Register時,我真想向業主和ImageGallery其他AccessRights的新聞源等。現在,當我已經註冊的用戶並將其添加以系統

 newUser = CommunitySystem.CurrentContext.DefaultSecurity.AddUser(newUser); 

它調用MyPageHandler_Register,並將所有權利:

 var user = e.Object as IUser; 
     if (user != null) 
     { 
      var myPage = MyPageHandler.Instance.GetMyPage(user); 
      if (myPage != null && myPage.ImageGallery != null) 
      { 
       foreach (var imageGallery in myPage.ImageGallery.Children) 
       { 
        var imageGalleryClone = imageGallery.CreateWritableClone() as ImageGallery; 
        imageGalleryClone.SetOwner(user); 
        ImageGalleryHandler.Instance.UpdateImageGallery(imageGalleryClone); 
       } 
      } 
     } 

實施SetOwner以下方法:

實施 DefaultSecurity_CreatedUser
public static void SetOwner(this ImageGallery imageGallery, IUser owner) 
    { 
     imageGallery.SetAttributeValue("Owner", owner); 
    } 

private void DefaultSecurity_CreatedUser(ISecurityHandler sender, ICreateUserEventArgs args) 
    { 
     // Add user to the community members group 
     var group = CommunityMembersGroup; 
     var addedUser = args.User; 
     addedUser = (IUser)addedUser.CreateWritableClone(); 
     addedUser.Groups.Add(group); 

     // Update the user 
     CommunitySystem.CurrentContext.DefaultSecurity.UpdateUser(addedUser); 

     // Set access rights to the newly created user 
     // Access right for anonymous users 
     var anonAccessRights = new ReadModifyRemoveAccessRights 
     { 
      Read = true, 
     }; 
     EntitySecurityHandler.Instance.SetAccessRights(addedUser, AnonymousGroup, anonAccessRights); 

     // Access right for community members 
     var communityMembersAccessRights = new ReadModifyRemoveAccessRights 
     { 
      Read = true, 
     }; 
     EntitySecurityHandler.Instance.SetAccessRights(addedUser, group, communityMembersAccessRights); 

     // Access rights for administrators 
     var adminAccessRights = new ReadModifyRemoveAccessRights 
     { 
      Read = true, 
      Modify = true, 
      Remove = true 
     }; 
     EntitySecurityHandler.Instance.SetAccessRights(addedUser, AdministratorsGroup, adminAccessRights); 

     // Access rights for the added user 
     var userAccessRights = new ReadModifyRemoveAccessRights 
     { 
      Read = true, 
      Modify = true, 
      Remove = true 
     }; 
     EntitySecurityHandler.Instance.SetAccessRights(addedUser, addedUser, userAccessRights); 

     // Access rights for moderator 
     var moderatorAccessRights = new ReadModifyRemoveAccessRights 
     { 
      Read = true, 
      Modify = true, 
      Remove = true 
     }; 
     EntitySecurityHandler.Instance.SetAccessRights(addedUser, ModeratorsGroup, moderatorAccessRights); 
    } 

注意:在此之前,您應該在管理面板中爲類型ImageGallery創建類型IUser的屬性「所有者」。