2016-05-20 7 views
0

Ich frage mich, wie ich den Zugriff auf bestimmte Modelleigenschaften im OData-Controller basierend auf Benutzerrollen einschränken kann.Einschränken des Zugriffs auf eine Model-Eigenschaft von einem ODataController

Für z.B. Ich habe eine wie unten genannt Benutzerklasse:

Public class Users 
{ 
    public int Id { get; set; } 

    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public string SSN { get; set; } 
} 

Und ich habe ein ODataController UsersODataController genannt, wie unten:

[EnableQuery] 
public IQuerable<Users> GetUsersOData() 
{ 
    return db.Users.AsQueryable(); 
} 

Wie kann ich nur GetUsersOData Methode zurückzukehren SSN Eigenschaft machen, wenn sie von Admin Benutzer zugreifen? Ich konnte die $ Filter und $ select Funktionalität in einem normalen MVC-Controller implementieren und SSN-Eigenschaft nur für Admin-Benutzer zurückgeben. Jedoch, , wenn ich die odata URL abfragen (für z. B. http://localhost/UsersApplication/odata/UsersOData) bekomme ich alle Eigenschaften einschließlich der SSN. Ist es möglich, die Filterlogik in UsersODataController selbst anzuwenden, so dass die ODATURL die SSN-Eigenschaft nur für Admin-Benutzer zurückgibt?

Antwort

0

Möglicherweise können Sie die OpenType-Funktion in WebAPI/OData verwenden und die SSN-Eigenschaft in resultsbesed on role einfügen. Example E2E test.

Public class Users 
{ 
    public int Id { get; set; } 

    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public IDictionary<string, object> DynamicProperties { get; set; } 
} 
Verwandte Themen