Spring MVC - Security

0 respostas
javaspringmvc
F

Pessoal estou com um problema, esse é meu springConfigurator ele esta reclamando do autowired Porque?

Esta é a stack]

out 27, 2016 6:41:50 PM org.apache.tomcat.util.digester.SetPropertiesRule begin

ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:JwPreach did not find a matching property.

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server version:        Apache Tomcat/8.0.36

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server built:          Jun 9 2016 13:55:50 UTC

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Server number:         8.0.36.0

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: OS Name:               Windows 8.1

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: OS Version:            6.3

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Architecture:          amd64

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Java Home:             C:\Program Files\Java\jre1.8.0_111

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: JVM Version:           1.8.0_111-b14

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: JVM Vendor:            Oracle Corporation

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: CATALINA_BASE:         C:\Users\Fernando\workspace-jwpreach-final.metadata.plugins\org.eclipse.wst.server.core\tmp0

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: CATALINA_HOME:         C:\Users\Fernando\workspace-jwpreach-final\Server\apache-tomcat-8.0.36

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dcatalina.base=C:\Users\Fernando\workspace-jwpreach-final.metadata.plugins\org.eclipse.wst.server.core\tmp0

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dcatalina.home=C:\Users\Fernando\workspace-jwpreach-final\Server\apache-tomcat-8.0.36

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dwtp.deploy=C:\Users\Fernando\workspace-jwpreach-final.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Djava.endorsed.dirs=C:\Users\Fernando\workspace-jwpreach-final\Server\apache-tomcat-8.0.36\endorsed

out 27, 2016 6:41:50 PM org.apache.catalina.startup.VersionLoggerListener log

INFORMAÇÕES: Command line argument: -Dfile.encoding=Cp1252

out 27, 2016 6:41:50 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent

INFORMAÇÕES: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_111\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_111/bin/server;C:/Program Files/Java/jre1.8.0_111/bin;C:/Program Files/Java/jre1.8.0_111/lib/amd64;C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\binaries\php\php_runningversion;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter\Driver;C:\Program Files (x86)\Intel\iCLS Client;C:\Program Files\Intel\iCLS Client;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files\Intel\Intel® Management Engine Components\DAL;C:\Program Files\Intel\Intel® Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel® Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel® Management Engine Components\IPT;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Lenovo\Bluetooth Software;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\ProgramData\Lenovo\ReadyApps;C:\Program Files\SafeNet\Authentication\SAC\x32;C:\Program Files\SafeNet\Authentication\SAC\x64;C:\Program Files (x86)\QuickTime\QTSystem;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files (x86)\Skype\Phone;C:\WINDOWS\system32\config\systemprofile.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk1.8.0_77\bin;C:\Program Files (x86)\Heroku\bin;C:\Program Files (x86)\git\cmd;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit;C:\Program Files (x86)\nodejs;C:\Users\Fernando\AppData\Local\atom\bin;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\Fernando\AppData\Roaming\npm;C:\Users\Fernando\AppData\Roaming\ClassicShell\Pinned;;.

out 27, 2016 6:41:51 PM org.apache.coyote.AbstractProtocol init

INFORMAÇÕES: Initializing ProtocolHandler [http-nio-8080]

out 27, 2016 6:41:51 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

INFORMAÇÕES: Using a shared selector for servlet write/read

out 27, 2016 6:41:51 PM org.apache.coyote.AbstractProtocol init

INFORMAÇÕES: Initializing ProtocolHandler [ajp-nio-8009]

out 27, 2016 6:41:51 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector

INFORMAÇÕES: Using a shared selector for servlet write/read

out 27, 2016 6:41:51 PM org.apache.catalina.startup.Catalina load

INFORMAÇÕES: Initialization processed in 1689 ms

out 27, 2016 6:41:51 PM org.apache.catalina.core.StandardService startInternal

INFORMAÇÕES: Starting service Catalina

out 27, 2016 6:41:51 PM org.apache.catalina.core.StandardEngine startInternal

INFORMAÇÕES: Starting Servlet Engine: Apache Tomcat/8.0.36

out 27, 2016 6:41:56 PM org.apache.jasper.servlet.TldScanner scanJars

INFORMAÇÕES: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

out 27, 2016 6:41:56 PM org.apache.catalina.core.ApplicationContext log

INFORMAÇÕES: Spring WebApplicationInitializers detected on classpath: [br.com.jwpreach.conf.ServletSpringMVC@3e765212, br.com.jwpreach.conf.SpringSecurityFilterConfiguration@4711f9a1]

log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See <a href="http://logging.apache.org/log4j/1.2/faq.html#noconfig">http://logging.apache.org/log4j/1.2/faq.html#noconfig</a> for more info.

out 27, 2016 6:41:57 PM org.apache.catalina.core.ApplicationContext log

INFORMAÇÕES: Initializing Spring root WebApplicationContext

out 27, 2016 6:42:04 PM org.apache.catalina.core.StandardContext listenerStart

GRAVE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener

org.springframework.beans.factory.BeanCreationException: Error creating bean with name securityConfiguration: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.jwpreach.daos.UserDAOImpl br.com.jwpreach.conf.SecurityConfiguration.userDAO; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.jwpreach.daos.UserDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:326)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1204)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)

at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4840)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.jwpreach.daos.UserDAOImpl br.com.jwpreach.conf.SecurityConfiguration.userDAO; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.jwpreach.daos.UserDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:542)

at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:323)

 22 more

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.jwpreach.daos.UserDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1261)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1009)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:904)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)

 24 more

out 27, 2016 6:42:04 PM org.apache.catalina.core.StandardContext startInternal
GRAVE: One or more listeners failed to start. Full details will be found in the appropriate container log file
out 27, 2016 6:42:04 PM org.apache.catalina.core.StandardContext startInternal
GRAVE: Context [/jwpreach] startup failed due to previous errors
out 27, 2016 6:42:04 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: Closing Spring root WebApplicationContext
out 27, 2016 6:42:04 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
ADVERTÊNCIA: The web application [jwpreach] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
out 27, 2016 6:42:04 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler [“http-nio-8080”]
out 27, 2016 6:42:04 PM org.apache.coyote.AbstractProtocol start
INFORMAÇÕES: Starting ProtocolHandler [“ajp-nio-8009”]
out 27, 2016 6:42:04 PM org.apache.catalina.startup.Catalina start
INFORMAÇÕES: Server startup in 13179 ms`

E estas são as classes

UserDaoImpl

`package br.com.jwpreach.daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.hibernate.Session;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import br.com.jwpreach.models.User;


public class UserDAOImpl implements UserDetailsService,UserDAO {

	@PersistenceContext
	private EntityManager manager;

	public User loadUserByUsername(String email) {
		List<User> usuarios = manager.createQuery("select u from User u where u.email = :email", User.class)
				.setParameter("email", email).getResultList();

		if (usuarios.isEmpty()) {
			throw new UsernameNotFoundException("Usuário com o email " + email + " não foi encontrado");
		}

		return usuarios.get(0);
	}

	public void addUser(User user) {
		manager.persist(user);
	}

	public void updateUser(User user) {
		manager.merge(user);
	}

	public User getUser(int id) {
		User user = (User) ((Session) manager).get(User.class, id);
		return user;
	}

	public void deleteUser(int id) {
		User user = getUser(id);
		if (user != null) {
			manager.remove(user);
		}

	}

	public List<User> listUsers() {
		return manager.createQuery("select * from user", User.class).getResultList();
	}

}
`

UserDAO.class

`package br.com.jwpreach.daos;

import java.util.List;

import br.com.jwpreach.models.User;

public interface UserDAO {
	public void addUser(User user);

	public void updateUser(User user);

	public User getUser(int id);

	public void deleteUser(int id);

	public List<User> listUsers();
}
`

UserDAOclass

`package br.com.jwpreach.daos;

import java.util.List;

import br.com.jwpreach.models.User;

public interface UserDAO {
	public void addUser(User user);

	public void updateUser(User user);

	public User getUser(int id);

	public void deleteUser(int id);

	public List<User> listUsers();
}
`

SpringConfiguration.class
 

`package br.com.jwpreach.conf;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
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.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

import br.com.jwpreach.daos.UserDAOImpl;

@ComponentScan("br.com.jwpreach.daos.UserDAOImpl")
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

	@Autowired
	private UserDAOImpl userDAO;

	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.authorizeRequests()
		.antMatchers("/users").hasRole("SECRETARY")
		.antMatchers("/report").hasAnyRole("PUBLISHER","ADMIN","SECRETARY","ELDER")
	    .antMatchers("/resources/**").permitAll()
	    .antMatchers("/").hasAnyRole("ADMIN","PUBLISHER","SECRETARY","ELDER")
	    .anyRequest().authenticated()
	    .and().formLogin().loginPage("/login").permitAll()
	    .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
	}

	@Override
	protected void configure(AuthenticationManagerBuilder auth) throws Exception {
		auth.userDetailsService(userDAO).passwordEncoder(new BCryptPasswordEncoder());
	}

	@Override
	public void configure(WebSecurity web) throws Exception {
		web.ignoring().antMatchers("/resources/**");
	}
}

VLWWWWW

Criado 27 de outubro de 2016
Respostas 0
Participantes 1