2016-04-15 14 views
0

私は、Spring MVC/SecurityとHibernateを使用してWebアプリケーションを作成しています。私はUserとUser_ProfileテーブルとjoinTableをdbに作成し、それらをアプリケーションにマップしました。新しいユーザーが登録するたびに、彼にデフォルトで「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 {

0事前にの
@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はそれをDBに保存します。 – 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

関連する問題