yo Leute,
ich habe eine generelle Frage zur speziellen Aufbereitung einer View.
Gewünscht ist, dass je nach angemeldeten User bestimmte Elemente (zb: Hyperlinks) angezeigt werden sollen.
So soll zB.: die IT-Entwicklung Zugriff auf die Stammdaten besitzen, der eigentliche Endkunde jedoch nicht. Damit mein ich aber nicht nur, dass der Zugriff über das "AuthorizeAttribute" abgefragt wird, sondern der Punkt soll gar nicht erst angezeigt werden.
Verbunden bin ich mit Active-Directory wo auch die Authentifizierung problemlos funktioniert.
Da in der IPrincipal-Schnittstelle bereits eine Methode "IsInRole" existiert habe ich das Interface um eine Funktion "IsInActiveDirectoryGroup" erweitert.
Die Abfrage der Gruppe funktioniert.
Wo soll aber nun korrekterweise die Abfrage stattfinden? Soll bereits der Controller eine gefilterte Liste an das View übergeben, oder soll direkt im View abgefragt werden?
Controller wäre:
Oder View:
lg
ich habe eine generelle Frage zur speziellen Aufbereitung einer View.
Gewünscht ist, dass je nach angemeldeten User bestimmte Elemente (zb: Hyperlinks) angezeigt werden sollen.
So soll zB.: die IT-Entwicklung Zugriff auf die Stammdaten besitzen, der eigentliche Endkunde jedoch nicht. Damit mein ich aber nicht nur, dass der Zugriff über das "AuthorizeAttribute" abgefragt wird, sondern der Punkt soll gar nicht erst angezeigt werden.
Verbunden bin ich mit Active-Directory wo auch die Authentifizierung problemlos funktioniert.
Da in der IPrincipal-Schnittstelle bereits eine Methode "IsInRole" existiert habe ich das Interface um eine Funktion "IsInActiveDirectoryGroup" erweitert.
Die Abfrage der Gruppe funktioniert.
Wo soll aber nun korrekterweise die Abfrage stattfinden? Soll bereits der Controller eine gefilterte Liste an das View übergeben, oder soll direkt im View abgefragt werden?
Controller wäre:
C#-Quellcode
- public ActionResult Menu()
- {
- if(!User.Identity.IsAuthenticated)
- return RedirectToAction("Login", "Account");
- // Transaction ist nur eine Dummyklasse mit einer Description- und Groups-Property
- List<Transaction> transactionsShow = new List<Transaction>();
- List<Transaction> transactions = new List<Transaction> {
- new Transaction("Stammdaten", "IT,IT-Entwicklung", null), // Zugriff nur für Gruppe IT und IT-Entwicklung
- new Transaction("Planung","", null), // Alle haben Zugriff
- new Transaction("Stammdaten2","IT", null) // Zugriff nur für Gruppe IT
- };
- foreach(Transaction trans in transactions)
- {
- if (User.IsInActiveDirectoryGroup(trans.Groups))
- transactionsShow.Add(trans);
- }
- return View(transactions);
- }
Oder View:
HTML-Quellcode
- @model List<Projektname.Models.Transaction>
- @{
- Layout = null;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <meta name="viewport" content="width=device-width" />
- <title>Menu</title>
- </head>
- <body>
- <div>
- @foreach(Projektname.Models.Transaction trans in Model)
- {
- if(User.IsInActiveDirectoryGroup(trans.Groups))
- {
- <div>@trans.Description</div>
- }
- }
- </div>
- </body>
- </html>
lg
ScheduleLib 0.0.1.0
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten