0

Grails: 3.3.0 Spring Security: 3.2.0.M1grails 3; En voyant vos propres données avec Spring Security

J'ai fait quelques recherches sur ce sujet et j'ai trouvé cette réponse après de (Seeing only your own data in Grails) pourrait être la réponse Je cherche, mais de toute façon ça ne marche pas.

Voici comment je capture l'utilisateur connecté et essaie de filtrer et de laisser l'utilisateur connecté afficher ses propres données. (Ceci est mon contrôleur de tâches) Par ailleurs ce qui est l'utilisation de [tâches: tâches]

def index(Integer max) { 
 

 
    def authenticated = getAuthenticatedUser().username 
 
    def tasks = User.findAllByUsername(authenticated) 
 
    [tasks: tasks] 
 
    params.max = Math.min(max ?: 10, 100) 
 
    respond Task.list(params), model:[tasks: Task.count()] 
 
}

Ceci est mon domaine de travail

class Task { 
 

 
    transient springSecurityService 
 
    
 
    String task 
 
    Project project 
 
    Pic picName 
 
    
 
    static hasMany = [subTask:Subtask] 
 
    static belongsTo =[Project,Pic,User] 
 
    } 
 

S'il vous plaît me donner quelques suggestions ou s'il vous plaît laissez-moi savoir où ai-je faire des erreurs! Merci d'avance! Cordialement, Hee

Répondre

0

je l'ai fait en appelant "tâches" à gsp.Il travaille pour moi

def  authenticated = getAuthenticatedUser().username 
 
     
 
     def  tasks = Task.findAllByLogginUser(authenticated) 
 
     
 
     params.max = Math.min(max ?: 10, 100) 
 
     respond Task.list(params), model:[tasks:tasks] // [tasks:tasks] is to passing tasks into my domain

Je viens d'appeler à partir de ma classe domaine $ {} tâches

0

Je ne pense pas que votre exigence n'est pas liée à Spring Security. En ce qui concerne le "Par ailleurs, quelle est l'utilisation de [tâches: tâches]" - il semble que vous avez deux points de retour dans le code que vous avez besoin de réparer - dans groovy vous pouvez omettre le "retour" si vous êtes dans la dernière ligne - donc je suppose que cette ligne est un retour du modèle qui comprend la liste des tâches - mais le code continue après ...

  1. si une tâche appartient à l'utilisateur, vous utilisez shuld:

    User user = getAuthenticatedUser() // method for getting the curren user 
    params.max = Math.min(max ?: 10, 100) // any query params you want to add 
    def tasks = Task.findAllByUser(user, params) //get the user Tasks using the query params 
    

puis retour e données e + toutes les autres données comme COUNT, etc.

  1. vous pouvez envisager de ne pas utiliser les multiples belongsTo-il votre modèle trop compliqué sans avoir besoin:

    static belongsTo =[Project,Pic,User] 
    

    dans le cas de la tâche appartient à l'utilisateur que vous pouvez garder l'ID utilisateur ou nom d'utilisateur pour chaque tâche et interroger par cette propriété - par exemple:

    class Task { 
    
    transient springSecurityService 
    
    String username // not unique 
    String task 
    Project project 
    Pic picName 
    
    static hasMany = [subTask:Subtask] 
    static belongsTo =[Project,Pic] 
    } 
    
    def username = getAuthenticatedUser().username // method for getting the current username. 
    params.max = Math.min(max ?: 10, 100) // any query params you want to add. 
    def tasks = Task.findAllByUsername(username, params) get the user Tasks using the query params. 
    
  2. garder BTW un service dans un modèle de domaine n'est pas une bonne pratique - utilisation le ser vice en l'injectant dans votre contrôleur/service

    transient springSecurityService 
    
+0

Merci pour votre réponse! En fait mon problème est juste que je n'ai pas appelé sur mon GSP. Et vraiment merci pour vos conseils – Trainee