Comment définir le rôle de l'utilisateur dans le Printemps de Sécurité 3?

Je suis en train de travailler sur JAVA EE technologie pour en savoir plus JSF-Spring-Hibernate vs...
Je suis en train de faire une application web avec diffirent rôles d'utilisateur. Maintenant, je n'ai qu'un utilisateur rôle ROLE_USER. Je ne pouvais pas changer ce rôle. J'ai essayé de debug mod pour comprendre comment nous définir ce rôle, mais je ne pouvais pas comprendre d'où cela se passe.

Donc, mon principal problème est que je ne peut pas créer un autre RÔLE dans mon application. Si je n'utilise pas <secured attributes="ROLE_USER" /> dans mon flow (je suis à l'aide de spring web flow) tout le monde peut rejoindre cette page. Si je ne fais que ROLE_USER. Mais je veux créer un nouveau rôle nommé ROLE_ADMIN et ne laisse ROLE_ADMIN pour atteindre cette page.

NOTE: je n'ai pas d'ajouter tous les fichiers, ici, la cause est parlé à moi, que seuls les compléter avec d'autres classes et les fichiers. Si vous avez besoin de plus d'informations s'il vous plaît laissez-moi savoir.

C'est le tutoriel soruce code que je suis.
https://code.google.com/p/jee-tutorial-youtube/source/browse/

security-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<security:http auto-config="true">
    <security:form-login login-page="/app/main"
        default-target-url="/app/account" />
    <security:logout logout-url="/app/logout"
        logout-success-url="/app/main" />
</security:http>

<security:authentication-manager>
    <security:authentication-provider
        user-service-ref="userServiceImp">
        <security:password-encoder hash="md5" />
    </security:authentication-provider>
</security:authentication-manager>

<bean id="daoAuthenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <property name="userDetailsService" ref="userServiceImp" />
    <property name="hideUserNotFoundExceptions" value="false" />
</bean>

<bean id="authenticationManager"
    class="org.springframework.security.authentication.ProviderManager">
    <constructor-arg>
        <ref bean="daoAuthenticationProvider" />
    </constructor-arg>
</bean>

C'est mon UserAuthenticationProviderServiceimp classe où je authenticatethe l'utilisateur.

 public boolean processUserAuthentication(Users user) {

        try {
                Authentication request = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword());
                Authentication result = authenticationManager.authenticate(request);
                SecurityContextHolder.getContext().setAuthentication(result);

                return true;
        } catch(AuthenticationException e) {
                FacesContext.getCurrentInstance().addMessage(null, 
                                new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "Sorry!"));

                return false;
        }
}

Et je me figure que cette fonction, im ma classe de Service, est appelé en processUserAuthentication.Alors j'ai pensé que c'est la fonction, où les Rôles sont programmés.

public UserDetails loadUserByUsername(String userName)
        throws UsernameNotFoundException {

    Users user = userDao.loadUserByUserName(userName);

    if (user == null) {
        throw new UsernameNotFoundException(String.format(
                getMessageBundle().getString("badCredentials"), userName));
    }

    Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
    authorities.add(new SimpleGrantedAuthority("USER_ROLE"));
    User userDetails = new User(user.getUserName(), user.getPassword(),
            authorities);
    return userDetails;
}

Mise à jour:

Dans mon projet, je dois utiliser cette syntaxe pour créer des rôles: ROLE_X où x est une chaîne. Exemple, on peut en avoir ROLE_MYNAME mais nous ne pouvons pas avoir fait saillie MYNAME ou MYNAME_ROLE comme rôle. Il a commencer avec ROLE_. Je suis encore à essayer de trouver ce couses ce problème. Je mettrai à jour Si j'ai trouvé la réponse.

EDIT:
Il y a une explication détaillée pourquoi on doit utiliser ROLE_ dans cette page;
http://bluefoot.info/howtos/spring-security-adding-a-custom-role-prefix/

OriginalL'auteur endertunc | 2014-07-23