AbstractCoreSession.java 文件源码

java
阅读 31 收藏 0 点赞 0 评论 0

项目:owsi-core-parent 作者:
/**
 * @see AbstractCoreSession#authenticate(String, String)
 */
public void signInAs(String username) throws UsernameNotFoundException {
    // on charge l'utilisateur
    // on le passe dans une méthode surchargeable -> implémentation par défaut à faire
    // Sitra -> revoir l'implémentation par défaut
    if (!hasSignInAsPermissions(getUser(), userService.getByUserName(username))) {
        throw new SecurityException("L'utilisateur n'a pas les permissions nécessaires");
    }
    UserDetails userDetails = userDetailsService.loadUserByUsername(username);
    RunAsUserToken token = new RunAsUserToken(defaultJpaSecurityConfig.getRunAsKey(),
            userDetails, "runAs", userDetails.getAuthorities(), null);

    // On garde l'authentification de l'utilisateur pour pouvoir lui proposer de se reconnecter.
    Authentication previousAuthentication = SecurityContextHolder.getContext().getAuthentication();
    if (!(previousAuthentication instanceof AnonymousAuthenticationToken)) {
        originalAuthentication = previousAuthentication;
    }

    signOut();

    Authentication authentication = authenticationManager.authenticate(token);
    SecurityContextHolder.getContext().setAuthentication(authentication);
    doInitializeSession();
    bind();
    signIn(true);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号