2013-02-01 130 views
0

我必須創建一個單獨的Web項目來訪問sitecore域的角色和用戶API,因此我可以通過編程方式添加新的角色以及自定義訪問樹和自定義語言訪問。我找到了安全API的文檔,http://sdn.sitecore.net/upload/sitecore6/sc61keywords/security_api_cookbook_usletter.pdf通過API添加和更改用戶和角色到Sitecore域通過API

但我不知道如何去添加一個新的角色,我可以創建任何類型的項目,如MVC4,還是必須在WebForms?這甚至有可能通過添加新角色並通過API爲新用戶分配新用戶來爲樹添加自定義權限,以便他們可以通過SiteCore域正常登錄?另外,我應該使用哪個數據庫,我看到有3種不同的(核心,主控,網頁),我必須手動連接到數據庫並在其中添加角色,否則API將爲我執行此操作?

+0

您確定要編程添加全新角色嗎?您很可能難以確定您新角色應該擁有的樹部分的訪問權限,但從自定義用戶界面角度來看,這將非常棘手。將用戶添加到現有角色將非常簡單,但我會質疑另一個要求,而不是這是否可行。我想你的角色結構在它結束時會變得有點亂,而且你不會很好地利用角色繼承。 – jammykam

+0

是的,我正在處理多語言網站的多語言桶,但每種語言實際上都有自己的桶,因爲這是已經實現的設計,所以要添加新角色,我必須手動撤銷對某些語言的訪問以及樹的某些部分用於每種語言的ContentApproval Role和ContentManager Role,並且可以添加更多語言,這意味着可以在多個位置添加更多的桶。我必須創建一個UI,以允許用戶添加新的語言和然後爲編輯者和管理者自動創建存儲桶和角色和用戶。任何方向? – aminjam

+0

那麼你是否也通過代碼添加了Sitecore語言?如果您只是添加新的網站語言,您將如何處理翻譯? – jammykam

回答

1

我最終創建了一個類,允許我在需要時添加新的語言(區域)。這是我與之合作的想法。

using(new Sitecore.Security.Accounts.UserSwitcher(user) //To switch to any user you want, in my case it was the "sitecore/admin" 


System.Web.Security.Roles.CreateRole(roleName) //To create roles 
var role = Sitecore.Security.Accounts.Role.FromName(roleName) //To retrieve the role. 
//Get a list of the permissions that you would like to set 
//For every item in that list 
AccessRuleCollection accessRule = Item.Security.GetAccessRules(); 
acessRule.Helper.AddAccessPermission(role,AccessRight,PropagationType,AccessPermission); 

//Write the Rules back to the item 
Item.Editing.BeginEdit(); 
Item.Security.SetAccessRules(accessRules); 
Item.Editing.EndEdit(); 

希望有所幫助。

+1

太棒了,對不起,我沒有足夠的時間回覆!很高興你把事情解決了。 – jammykam