2016-04-15 75 views
0

我使用Spring MVC/Security和Hibernate創建了一個Web應用程序。我在數據庫中創建了User和User_Profile表以及一個joinTable,並將它們映射到我的應用程序中。每當有新用戶註冊時,我都會默認給他一個「ROLE_USER」。註冊新用戶後的默認角色

我迷路了我不知道該怎麼做? 而在註冊時我應該爲他指定一個新角色?

@Repository("userDao") 

公共類UserDAOImpl中延伸AbstractDao的實現的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); 
} 

}

這是包含NEWUSER控制器()的部分:

@Controller 

公共類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 :

在此先感謝。

+0

這屬於業務層,作爲創建新用戶的一部分。如何做:將角色添加到User對象,Hibernate將負責將其存儲在數據庫中。 – Henry

+0

我不明白,你的意思是我應該在服務層上添加一個結合角色和用戶的函數嗎? – Najoua

+0

應該有一個服務層功能「createUser」,它應該做所有必要的默認設置。 – Henry

回答

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

您能詳細解釋一下您提供的解決方案嗎? – abarisone