2012-06-18 12 views
7

Ich bin neu bei asp.mvc. Ich versuche ein Portal zur Pflege von Mitarbeiterdaten zu entwickeln. In meinem System hat nur "Manager" die Rechte, Mitarbeiter zu erstellen. Wie kann ich den Link, wenn Manager einloggen und deaktivieren, wenn Mitarbeiter log in. DankLink ausblenden basierend auf Rolle

My View

@model IEnumerable<SealManagementPortal_3._0.Models.VOC_CUSTODIAN> 
@{ 
    ViewBag.Title = "List of Custodians"; 
} 
<h2>Index</h2> 
<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     jQuery("#list2").jqGrid({ 
      url: '@Url.Action("GridData", "Custodian")', 
      datatype: 'json', 
      mtype: 'GET', 
      colNames: ['Agent ID', 'Branch', 'Unique ID', 'Custodian Name', /*'NRIC No', 'E-Mail', 'Contact No', 'Mobile No',*/'Role', 'Details', 'Edit', 'Delete'], 
      colModel: [ 
       { name: 'Agent ID', index: '', width: 10, align: 'left' }, 
       { name: 'Branch', index: '', width: 10, align: 'left' }, 
       { name: 'Unique ID', index: '', width: 10, align: 'left' }, 
       { name: 'Custodian Name', index: '', width: 10, align: 'left' },     
       {name: 'Role', index: '', width: 10, align: 'left' }, 
       { name: 'Details', index: '', width: 5, align: 'left' }, 
       { name: 'Edit', index: '', width: 5, align: 'left' }, 
       { name: 'Delete', index: '', width: 5, align: 'left'}], 
      pager: jQuery('#pager2'), 
      rowNum: 10,     
      sortname: 'Id', 
      sortorder: "desc", 
      viewrecords: true, 
      autowidth: true, 
      caption: 'Custodians List' 
     }); 
    }); 
</script> 
@using (Html.BeginForm()) 
{ 
    <table id="list2" class="scroll" cellpadding="0" cellspacing="0"></table> 

Antwort

15

Sie Rollen verwenden können. Die erste und wichtigste Sache ist die Controller-Aktion zu dekorieren, die angeblich das Update mit dem Authorize Attribute ausführen und die richtigen Rollen festlegen, dass der Benutzer, um diese Controller-Aktion für den Zugriff besitzen muss:

[HttpPost] 
[Authorize(Roles = "Managers")] 
public ActionResult Create(Employee emp) 
{ 
    ... 
} 

Sobald alles auf dem Server sicher ist, könnte man Kosmetika in der Ansicht tun und den Link nur angezeigt, wenn der Benutzer in der Managers Rolle ist:

@if (User.IsInRole("Managers")) 
{ 
    @Html.ActionLink("Create employee", "Create") 
} 

Sie einen Blick für weitere Informationen auf den following article nehmen kann über Formularauthentifizierung und Rollen.

+0

Gibt es eine Möglichkeit, die Wiederholung von "Managern" in der Vorlage zu vermeiden? Ich hätte gerne eine Rollenverwaltung an einem Ort und das Autorize-Attribut ist sehr gut für mich. Kann ich irgendwie einen HtmlHelper definieren, der auf den Inhalt des Attributs zugreift? –

Verwandte Themen