2016-08-23 2 views
2

Je dois masquer les boutons dans les données pour les utilisateurs non autorisés.Masquer les boutons dans les données pour les utilisateurs non autorisés avec Spring Security

En clair jsp J'ai été utilisé des étiquettes de sécurité de printemps pour cacher des éléments pour les utilisateurs non autorisés.

E.g. masquer supprimer le bouton:

<sec:authorize access="hasRole('ROLE_ADMIN')"> <a href="delete/${author.id}">Delete</a></sec:authorize> 

Mais dans les données jquery, les boutons proviennent de la configuration javascript interne. Et je ne peux pas utiliser les étiquettes de sécurité de printemps. E.g. Supprimer dans DataTables:

"buttons": [ 
{ 
    text: "Delete", 
    action: function (e, dt, button, config){ 
     //button onClick here 
    } 
} 
] 
+0

Si vous pouvez obtenir le statut d'autorisation dans une variable JavaScript, vous pouvez définir 'buttons' en fonction de la variable. Je ne connais aucun JSP ou Spring. – thirtydot

+0

@thirtydot, oui je peux obtenir une variable d'autorisation en js, mais que dois-je faire ensuite? Comment puis-je vérifier cette variable dans Datatables? – Redeemer

Répondre

1

Voici un exemple:

var authStatus = true; //your auth status variable from JSP 

var buttons = []; 

if (authStatus) { 
    buttons = [ 
     { 
      text: "Delete", 
      action: function(e, dt, button, config) { 
       //button onClick here 
      } 
     } 
    ]; 
} 

$('#example').DataTable({ 
    dom: 'Bfrtip', 
    buttons: buttons, 
}); 

Vous pourriez plutôt l'écrire en ligne avec un opérateur ternaire, mais il ne sera pas aussi clair.

+0

TY, c'est travaillé! – Redeemer