2016-04-15 7 views
0

Ich erstelle eine Webanwendung mit Spring MVC/Security und Hibernate. Ich habe Benutzer- und User_Profile-Tabellen sowie eine JoinTable in der Datenbank erstellt und sie in meiner Anwendung zugeordnet. Wenn sich ein neuer Benutzer anmeldet, möchte ich ihm standardmäßig einen "ROLE_USER" geben.Standardrolle nach der Registrierung eines neuen Benutzers

Ich bin verloren Ich habe keine Ahnung, wie es geht? Und auf welcher Ebene sollte ich ihm eine neue Rolle bei der Registrierung zuweisen?

@Repository("userDao") 

public class UserDaoImpl erstreckt AbstractDao implementiert UserDao {

public User findById(int id) { 
    return getByKey(id); 
} 

public User findBySSO(String sso) { 
    Criteria crit = createEntityCriteria(); 
    crit.add(Restrictions.eq("ssoId", sso)); 
    return (User) crit.uniqueResult(); 
} 

public void saveUser(User user) { 
    persist(user); 
} 

}

Und das ist der Teil der Steuereinheit, die newUser enthält():

@Controller 

public class HelloWorldController {

@Autowired 
UserService service; 

//new user 
@RequestMapping(value = "/registration", method = RequestMethod.GET) 
public String newUser(ModelMap model) { 
    User user = new User(); 
    model.addAttribute("user", user); 
    return "registration"; 
} 

//save user 
@RequestMapping(value = { "/registration" }, method = RequestMethod.POST) 
public String saveUser(User user, ModelMap model) { 
    service.saveUser(user); 
    model.addAttribute("user ", user); 
    //return "registration"; 
    return "redirect:/login"; 
} 
... 

and here's the userDetailsService :

Vielen Dank im Voraus.

+0

Dies gehört zur Business-Schicht als Teil eines neuen Benutzers zu schaffen. Wie es gemacht wird: fügen Sie die Rolle dem Benutzerobjekt hinzu, Hibernate kümmert sich darum, es in der Datenbank zu speichern. – Henry

+0

Ich verstehe es nicht, meinst du, ich sollte eine Funktion hinzufügen, die die Rolle und den Benutzer auf der Serviceebene kombinieren? – Najoua

+0

Es sollte eine Service-Layer-Funktion "createUser" geben, und es sollte alle notwendigen Standardeinstellungen vornehmen. – Henry

Antwort

0
public class AuthenticatedUser extends org.springframework.security.core.userdetails.User { 
private static final long serialVersionUID = -7995477185057372770L; 
private final int id; 
private String firstname; 
private String lastname; 

final static Logger logger = Logger.getLogger(AuthenticatedUser.class); 
public AuthenticatedUser(Person person) { 
    super(person.getEmail(), person.getPassword(), getAuthoritiesFromUser(person)); 
    this.id = person.getId(); 
    this.firstname= person.getName(); 
    this.lastname = person.getSurname(); 

} 

public static List<GrantedAuthority> getAuthoritiesFromUser(Person person) { 
    List<GrantedAuthority> grantedAuths = new ArrayList<GrantedAuthority>(); 

    if("aktifUser".equals(person.getRole().getName())){ 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER")); 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_NORMALUSER")); 
    } 

    if("adminUser".equals(person.getRole().getName())){ 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_ADMIN")); 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER")); 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_COMPANY")); 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_NORMALUSER")); 
    } 

    if("employeeUser".equals(person.getRole().getName())){ 
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER"));   
     grantedAuths.add(new SimpleGrantedAuthority("ROLE_COMPANY")); 
    } 

    logger.info("Granted Auths" + grantedAuths.toString()); 
    return grantedAuths; 
} 

public int getId() { 
    return id; 
} 

public String getFirstname() { 
    return firstname; 
} 

public void setFirstname(String firstname) { 
    this.firstname = firstname; 
} 

public String getLastname() { 
    return lastname; 
} 

public void setLastname(String lastname) { 
    this.lastname = lastname; 
} 

}

+0

Könnten Sie bitte Ihre Antwort näher erläutern, indem Sie ein wenig mehr Beschreibung der von Ihnen bereitgestellten Lösung hinzufügen? – abarisone

Verwandte Themen