2012-06-18 16 views
7

Im new to asp.mvc. Sto cercando di sviluppare un portale per mantenere i dati dei dipendenti. Nel mio sistema solo "Manager" ha il diritto di creare dipendenti. Come faccio ad attivare il collegamento quando il manager di log in e disattivare quando il registro dei dipendenti. GrazieNascondere il collegamento in base al ruolo

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> 

risposta

15

Si potrebbe utilizzare i ruoli. Il primo e più importante è quello di decorare l'azione del regolatore che dovrebbe eseguire l'aggiornamento con l'attributo Authorize e specificare i ruoli corretti che l'utente deve possedere per poter accedere a questa azione di controllo:

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

una volta che tutto è sicuro sul server si potrebbe fare cosmetici nella vista e mostrare il link solo se l'utente è nel ruolo di Managers:

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

si può prendere uno sguardo al following article per ulteriori informazioni su autenticazione basata su form e ruoli.

+0

C'è un modo per evitare la ripetizione di "Gestori" nel modello? Mi piacerebbe avere la gestione dei ruoli in un posto e l'attributo Autorizza è molto buono con me. Posso in qualche modo definire un HtmlHelper che accede al contenuto dell'attributo? –