Estou desenvolvendo uma aplicação utilizando o Spring Security e estou com o seguinte problema:
Quando eu clico na página de login mesmo o meu usuário e senha estando certos, o meu arquivo aplicationContext não está fazendo o redirecionamento para o pacote “comAutenticacao” como deveria fazer… Mesmo o usuário tendo as permissões necessárias.
@Service@TransactionalpublicclassUserDetailServiceImplimplementsUserDetailsService{@AutowiredprivateUsuarioDAOuserDAO;privateUsuarioBeanuser;publicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundException,DataAccessException{if(username!=null&&!username.equals("")){user=(UsuarioBean)userDAO.procurarUsuario(username);if(user==null){thrownewUsernameNotFoundException("Usuário não encontrado: "+username);}List<GrantedAuthority>authorities=newArrayList<GrantedAuthority>();GrantedAuthorityImplgrantedAuthorityImpl=newGrantedAuthorityImpl("ROLE_DEFAULT");authorities.add(grantedAuthorityImpl);if(user.getPermissaoCollection()!=null&&!user.getPermissaoCollection().isEmpty()){for(Permissaop:user.getPermissaoCollection()){GrantedAuthorityImplgrantedAuthorityTmp=newGrantedAuthorityImpl(p.getRoleDefinition());authorities.add(grantedAuthorityTmp);}}UserDetailsuserDetails=newUserDetails(user.getPassword(),user.getUsername(),authorities);returnuserDetails;}else{thrownewUsernameNotFoundException("Usuário não encontrado: "+username);}}}
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:sec="http://www.springframework.org/schema/security"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"><!-- data source --><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><propertyname="driverClassName"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/spring_security"/><propertyname="username"value="root"/><propertyname="password"value="substitui_pela_sua_senha_aqui"/></bean><sec:httpauto-config="true"access-denied-page="/access/accessDenied.jsp"><sec:form-loginlogin-page="/access/loginPage.jsp"authentication-failure-url="/access/loginPage.jsp?error=accessDenied"/><sec:intercept-urlpattern="/funcionario/**"access="ROLE_FUNC,ROLE_GER"/><sec:intercept-urlpattern="/gerente/**"access="ROLE_GER"/><sec:intercept-urlpattern="/**"access="IS_AUTHENTICATED_ANONYMOUSLY"/></sec:http><sec:authentication-manager><sec:authentication-provider><sec:jdbc-user-servicedata-source-ref="dataSource"users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"authorities-by-username-query="SELECT username, authority FROM users WHERE username=?"/></sec:authentication-provider></sec:authentication-manager></beans>
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:sec="http://www.springframework.org/schema/security"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"><!-- data source --><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><propertyname="driverClassName"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/spring_security"/><propertyname="username"value="root"/><propertyname="password"value="substitui_pela_sua_senha_aqui"/></bean><sec:httpauto-config="true"access-denied-page="/access/accessDenied.jsp"><sec:form-loginlogin-page="/access/loginPage.jsp"authentication-failure-url="/access/loginPage.jsp?error=accessDenied"/><sec:intercept-urlpattern="/funcionario/**"access="ROLE_FUNC,ROLE_GER"/><sec:intercept-urlpattern="/gerente/**"access="ROLE_GER"/><sec:intercept-urlpattern="/**"access="IS_AUTHENTICATED_ANONYMOUSLY"/></sec:http><sec:authentication-manager><sec:authentication-provider><sec:jdbc-user-servicedata-source-ref="dataSource"users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"authorities-by-username-query="SELECT username, authority FROM users WHERE username=?"/></sec:authentication-provider></sec:authentication-manager></beans>
Cara o primeiro link que você me mandou funcionou normalmente, o problema é que o segundo não está entrando...
Mas eu to precisando fazer uma classe que faça essa consulta, pois na minha aplicação eu to usando o JPA e hibernate ai fica meio ruim colocar o select e os dados referentes a conexão com o banco no applicationContext.
Mas a minha classe UserDetailServiceImpl ela ta funcionando e trazendo o usuário com as suas permissões, só que o problema, é o spring security não ta fazendo o redirecionamento para o pacote correto.
Caso alguem que puder me ajudar agradeço muito..
N
narutor99
narutor99:
pqnoje:
Tenta mudar o seu como se fosse o meu...
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:sec="http://www.springframework.org/schema/security"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"><!-- data source --><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><propertyname="driverClassName"value="com.mysql.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/spring_security"/><propertyname="username"value="root"/><propertyname="password"value="substitui_pela_sua_senha_aqui"/></bean><sec:httpauto-config="true"access-denied-page="/access/accessDenied.jsp"><sec:form-loginlogin-page="/access/loginPage.jsp"authentication-failure-url="/access/loginPage.jsp?error=accessDenied"/><sec:intercept-urlpattern="/funcionario/**"access="ROLE_FUNC,ROLE_GER"/><sec:intercept-urlpattern="/gerente/**"access="ROLE_GER"/><sec:intercept-urlpattern="/**"access="IS_AUTHENTICATED_ANONYMOUSLY"/></sec:http><sec:authentication-manager><sec:authentication-provider><sec:jdbc-user-servicedata-source-ref="dataSource"users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"authorities-by-username-query="SELECT username, authority FROM users WHERE username=?"/></sec:authentication-provider></sec:authentication-manager></beans>
Cara o primeiro link que você me mandou funcionou normalmente, o problema é que o segundo não está entrando...
Mas eu to precisando fazer uma classe que faça essa consulta, pois na minha aplicação eu to usando o JPA e hibernate ai fica meio ruim colocar o select e os dados referentes a conexão com o banco no applicationContext.
Mas a minha classe UserDetailServiceImpl ela ta funcionando e trazendo o usuário com as suas permissões, só que o problema, é o spring security não ta fazendo o redirecionamento para o pacote correto.
Caso alguem que puder me ajudar agradeço muito..
Pessoal o problema citado acima eu consegui resolver.....
N
narutor99
Agora está dando outro problema…
Eu coloquei na minha página um controle de acesso em um button igual a tag abaixo.