2013-07-15 66 views
0

MVC5控制器有一個用戶屬性是一個System.Security.Claims.ClaimsPrincipal無法從System.Security.Claims.ClaimsPrincipal到繼承

我已經創建了一個基本控制器這是我從繼承。該基地控制器的User財產被覆蓋與mycustomPrinciple它繼承自System.Security.Claims.ClaimsPrincipal

public abstract partial class BaseController : Controller 
    { 

     public new mycustomPrinciple User 
     { 
      get 
      { 
       return base.User as mycustomPrinciple; //returns null here 
      } 
     } 
    } 

public class mycustomPrinciple : System.Security.Claims.ClaimsPrincipal 
    { 
     private int _ID; 

     public int ID 
     { 
      get { return _ID; } 
      set { _ID = value; } 
     } 

    } 

,你可以在上面看到它失敗的演員。我不確定爲什麼這是因爲我在MVC4做了類似的事情,但繼承原則是System.Security.Principal.IPrincipal,因爲這是控制器用戶屬性是一種類型。

回答

0

您錯過了ClaimsPrincipal的要點 - Claims集合是您保存特定於應用程序的身份數據的地方。然後,我會建議添加擴展方法來提取特定的聲明,如「ID」。

+0

因此,一旦有人使用其中一種方法登錄,您可以向該集合中添加一個聲明,以便識別數據庫中的用戶,併爲claimprinciple類提供擴展方法,以便您可以這出來,還是數據庫用戶記錄? – Tim

+0

是的。你可以在WIF可擴展性點上做這個叫做「索賠認證管理器」(我們更喜歡稱之爲索賠變換器)。 –

+0

我在這和一些類似的查詢在http://stackoverflow.com/questions/17641956/howto-use-new-mvc5-authentication-with-existing-database中的一些答案之間感到困惑。我想在RTM的時候會有更多的細節,但是關於MVC5中新的聲明/身份系統的自定義的詳細信息很少 – Tim