аутентификация весна безопасности - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь аутентифицироваться с использованием Spring Security и JSF, но это не работает, когда я помещаю свою аутентификационную информацию, не передавайте. Я попробовал некоторые решения, и вот одна из тем, это мой первый раз, когда я настраиваю JSF, Spring Security

есть мой код:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;

@Autowired
public void configurationGlobal(AuthenticationManagerBuilder auth) throws  Exception {
       auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN");
   // auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().
            authorizeRequests()
                .anyRequest()
                      .authenticated()
            .and()
            .formLogin()
                 .loginPage("/login.xhtml").loginProcessingUrl("login").failureUrl("/login.xhtml?error=true")
                      .permitAll()
            .defaultSuccessUrl("/index.xhtml");

}

@Bean
public BCryptPasswordEncoder passwordEncoder() {
 return new BCryptPasswordEncoder();
};
}

это моя страница входа

      <form action="${request.contextPath}/login" method="POST">
        <h:outputLabel value="Enter UserName:" />
        <input type="text" name="username"/><br/><br/>
        <h:outputLabel value="Enter Password:" />
        <input type="password" name="password"/> <br/><br/>         
        <input type="submit" value="Login"/>
        <input type="hidden" name="${_csrf.parameterName}"   value="${_csrf.token}"/>           
      </form>

лица-config.xml

  <?xml version='1.0' encoding='UTF-8'?>
    <faces-config version="2.2"
          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-facesconfig_2_2.xsd">
      <application>
    <el-resolver>
            org.springframework.web.jsf.el.SpringBeanFacesELResolver
    </el-resolver>
   </application>
 </faces-config>

а это мой web.xml

  <?xml version="1.0" encoding="UTF-8"?>
  <web-app version="3.1" 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">
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
    org.springframework.web.context.request.RequestContextListener
</listener-class>
 </listener>
</web-app>

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

я решаю проблему, удаляя passwordEncoder

 @Bean
 public BCryptPasswordEncoder passwordEncoder() {
   return new BCryptPasswordEncoder();
  };

и поскольку я использую Spring Security 5, я добавил {noop} перед своим паролем, как это

 auth.inMemoryAuthentication().withUser("admin").password("{noop}admin").roles("ADMIN");
0 голосов
/ 11 ноября 2018

Spring boot - это автономный сервер, JSF - среда веб-интерфейса. Первое, что вы должны интегрировать оба. Для легкого запуска используйте https://github.com/joinfaces/joinfaces.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...