IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

ZK + spring + spring security + java configuration


Sujet :

Spring Web Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 15
    Points
    15
    Par défaut ZK + spring + spring security + java configuration
    Bonjour,

    J'ai une application web qui utilise spring et spring security, le tout configuré en java (pas de fichier xml). Je veux utiliser ZK pour la partie visuelle mais lorsque je change, dans ma config, le suffix ".jsp" en ".zul, la seule page qui s'affiche est "Chargement...". La page n'est pas en attente et il n'y a pas de message d'erreur. L'application est déployée sur un server Wildfly.
    J'ai ajouté un fichier web.xml pour zk, mais cela ne change rien.

    Voici le code :


    web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- Start ZK -->
    <servlet>
        <description>ZK loader for evaluating ZUML pages</description>
        <servlet-name>zkLoader</servlet-name>
        <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
        <init-param>
            <param-name>update-uri</param-name>
            <param-value>/zkau</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>zkLoader</servlet-name>
        <url-pattern>*.zul</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>zkLoader</servlet-name>
        <url-pattern>*.zhtml</url-pattern>
    </servlet-mapping>
    <servlet>
        <description>The asynchronous update engine for ZK</description>
        <servlet-name>auEngine</servlet-name>
        <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>auEngine</servlet-name>
        <url-pattern>/zkau/*</url-pattern>
    </servlet-mapping>
    <!-- End ZK -->
     
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
     
    <session-config>
        <session-timeout>
            300
        </session-timeout>
    </session-config>
     
    </web-app>
    HelloWordConfiguration.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package test.sfs.springsecurity.configuration;
     
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    import org.springframework.core.annotation.Order;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    import org.springframework.web.servlet.view.JstlView;
     
    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = "test.sfs")
    @Import(value = SecurityConfiguration.class)
    @Order(1)
    public class HelloWorldConfiguration extends WebMvcConfigurerAdapter {
     
        @Bean(name="HelloWorld")
        public ViewResolver viewResolver() {
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    //      viewResolver.setViewClass(JstlView.class);
            viewResolver.setPrefix("/WEB-INF/views/");
            viewResolver.setSuffix(".zul");
     
            return viewResolver;
        }
     
        /*
         * Configure ResourceHandlers to serve static resources like CSS/ Javascript etc...
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations("/static/");
        }
    }
    SecurityConfiguration.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    package test.sfs.springsecurity.configuration;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
     
    @Configuration
    @EnableWebSecurity
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
     
     
        @Autowired
        public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication().withUser("bill").password("abc123").roles("USER");
            auth.inMemoryAuthentication().withUser("admin").password("root123").roles("ADMIN");
            auth.inMemoryAuthentication().withUser("dba").password("root123").roles("ADMIN","DBA");
        }
     
        @Override
        protected void configure(HttpSecurity http) throws Exception {
     
          http.authorizeRequests()
            .antMatchers("/admin/**").access("hasRole('ADMIN')")
            .antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")
                    .anyRequest().authenticated()
            .and().formLogin().loginPage("/login").permitAll()
            .usernameParameter("ssoId").passwordParameter("password")
            .and().csrf()
            .and().exceptionHandling().accessDeniedPage("/Access_Denied");
        }
    }
    SecurityWebApplicationInitializer.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package test.sfs.springsecurity.configuration;
     
    import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
     
    public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
     
    }
    SpringMvcInitializer.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    package test.sfs.springsecurity.configuration;
     
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
     
    public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
     
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class[] { HelloWorldConfiguration.class };
        }
     
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return null;
        }
     
        @Override
        protected String[] getServletMappings() {
            return new String[] { "/", "*" };
        }
     
    }
    HelloWordController.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package test.sfs.springsecurity.controller;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.security.core.Authentication;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
     
    @Controller
    public class HelloWorldController {
     
     
        @RequestMapping(value = { "/", "/home" }, method = RequestMethod.GET)
        public String homePage(ModelMap model) {
            model.addAttribute("greeting", "Hi, Welcome to mysite");
            return "welcome";
        }
     
        @RequestMapping(value = "/admin", method = RequestMethod.GET)
        public String adminPage(ModelMap model) {
            model.addAttribute("user", getPrincipal());
            return "admin";
        }
     
        @RequestMapping(value = "/db", method = RequestMethod.GET)
        public String dbaPage(ModelMap model) {
            model.addAttribute("user", getPrincipal());
            return "dba";
        }
     
        @RequestMapping(value = "/Access_Denied", method = RequestMethod.GET)
        public String accessDeniedPage(ModelMap model) {
            model.addAttribute("user", getPrincipal());
            return "accessDenied";
        }
     
        @RequestMapping(value = "/login", method = RequestMethod.GET)
        public String loginPage() {
            return "login";
        }
     
        @RequestMapping(value="/logout", method = RequestMethod.GET)
        public String logoutPage (HttpServletRequest request, HttpServletResponse response) {
            Authentication auth = SecurityContextHolder.getContext().getAuthentication();
            if (auth != null){    
                new SecurityContextLogoutHandler().logout(request, response, auth);
            }
            return "redirect:/login?logout";
        }
     
        private String getPrincipal(){
            String userName = null;
            Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
     
            if (principal instanceof UserDetails) {
                userName = ((UserDetails)principal).getUsername();
            } else {
                userName = principal.toString();
            }
            return userName;
        }
     
    }
    pom.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
     
        <groupId>test-sfs</groupId>
        <artifactId>sfs-test</artifactId>
        <version>1.0.0</version>
        <packaging>war</packaging>
     
        <name>sfs-test</name>
     
        <properties>
            <springframework.version>4.2.6.RELEASE</springframework.version>
            <springsecurity.version>4.1.0.RELEASE</springsecurity.version>
     
            <zk.version>8.0.0</zk.version>
            <zkspring.version>3.2.0</zkspring.version>
            <!--<zkspring.security.version>3.2.0</zkspring.security.version>-->
                    <spring-release-train.version>Hopper-SR1</spring-release-train.version>
                    <spring-data.version>1.10.1.RELEASE</spring-data.version>
                    <hibernate.version>4.3.7.Final</hibernate.version>
            </properties>
     
        <dependencies>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${springframework.version}</version>
            </dependency>
     
            <!-- Spring Security -->
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-web</artifactId>
                <version>${springsecurity.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-config</artifactId>
                <version>${springsecurity.version}</version>
            </dependency>
     
                    <dependency>
                        <groupId>org.springframework.data</groupId>
                        <artifactId>spring-data-jpa</artifactId>
                        <version>${spring-data.version}</version>
                    </dependency>
     
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                    <version>${hibernate.version}</version>
                </dependency>
                <!-- Start zk -->
                <dependency>
                    <groupId>org.zkoss.zk</groupId>
                    <artifactId>zkplus</artifactId>
                    <version>${zk.version}</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.slf4j</groupId>
                            <artifactId>slf4j-jdk14</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
                <dependency>
                    <groupId>org.zkoss.zk</groupId>
                    <artifactId>zkbind</artifactId>
                    <version>${zk.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.zkoss.zk</groupId>
                    <artifactId>zkspring-core</artifactId>
                    <version>${zkspring.version}</version>
                </dependency>
                            <!--
                <dependency>
                    <groupId>org.zkoss.zk</groupId>
                    <artifactId>zkspring-security</artifactId>
                    <version>${zkspring.security.version}</version>
                </dependency>
                            -->
                <!-- End zk -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
     
            <dependencyManagement>
                <dependencies>
            <!-- Spring Data -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-releasetrain</artifactId>
                <version>${spring-release-train.version}</version>
                            <scope>import</scope>
                            <type>pom</type>
            </dependency>
     
                </dependencies>
            </dependencyManagement>
     
            <build>
                <finalName>${project.artifactId}</finalName>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.4</version>
                        <configuration>
                            <warSourceDirectory>src/main/webapp</warSourceDirectory>
                            <warName>${project.artifactId}</warName>
                            <failOnMissingWebXml>false</failOnMissingWebXml>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </project>

    Une idée ?

    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet-mapping>
        <servlet-name>zkLoader</servlet-name>
        <url-pattern>*.zul</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>zkLoader</servlet-name>
        <url-pattern>*.zhtml</url-pattern>
    </servlet-mapping>
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <servlet-mapping>
        <servlet-name>zkLoader</servlet-name>
        <url-pattern>*.zul</url-pattern>
        <url-pattern>*.zhtml</url-pattern>
    </servlet-mapping>

    A+.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Grouper les url-pattern ne change rien. Par contre, en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .antMatchers("/zkau/**").permitAll()
    dans la méthode configure de SecurityConfiguration.java, la page login.zul s'affiche. Mais je n'ai pas ma feuille de style et lorsque je clique sur submit, j'ai l'erreur
    Request method 'POST' not supported
    . Or, avec la page login.jsp et la méthode POST, cela fonctionne.

    Une autre idée ?

    Merci d'avance.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Il n'y a aucune trace de zk dans le code java, que du spring mvc.
    Le controller devrait étendre "GenericForwardComposer" (controller au sens ZK) et surcharger la methode doAfterCompose. En plus, je ne vois que des methodes GET dans le controller, pas de POST.
    Avec le template .zul ce serait plus facile...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/10/2009, 13h48
  2. [Framework] Spring Hibernate session java.sql.Connection config
    Par yLaplace dans le forum Spring
    Réponses: 0
    Dernier message: 22/01/2009, 10h16
  3. [Data] [SPRING 2.5][JPA] Configuration JTA pour JPA
    Par Righetto Dominique dans le forum Spring
    Réponses: 0
    Dernier message: 01/08/2008, 14h22
  4. [Framework] Coincé : Spring POA "erreur de configuration"
    Par otam_otam dans le forum Spring
    Réponses: 1
    Dernier message: 25/05/2008, 23h35
  5. [Security] Spring + acegi-security
    Par willoi dans le forum Spring
    Réponses: 4
    Dernier message: 29/12/2006, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo