opa.... primeira vez q to lidando com login... implementei um login com spring e ta tudo dance certo (ate agora), vamos a pergunta.... qndo eu faço login ele me rediciona para a pagina de index mas mesmo assim se eu não tiver feito o login eu consigo acessar as paginas e fazer manipulações no meu banco... gostaria de saber como faço pra bloquear as paginas.. fazer com que o usuario só acesse se tiver feito o login... alguem???
aplication context
<?xml version="1.0" encoding="UTF-8"?><beans:beansxmlns="http://www.springframework.org/schema/security"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:beans="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security-3.0.xsd"><httpauto-config="true"use-expressions="true"><intercept-urlpattern="/index.jsf"access="hasRole('ROLE_USER')"/><form-loginlogin-page="/login.jsf"authentication-failure-url="/login.jsf?erro=true"default-target-url="/index.jsf"/></http><authentication-manager><authentication-provider><jdbc-user-servicedata-source-ref="dataSource"users-by-username-query="SELECT login, senha, 'true' as enable FROM funcionario WHERE login=?"authorities-by-username-query="SELECT login, authority FROM funcionario WHERE login=?"/></authentication-provider></authentication-manager><beans:beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><beans:propertyname="url"value="jdbc:mysql://localhost:3306/wesley"/><beans:propertyname="driverClassName"value="com.mysql.jdbc.Driver"/><beans:propertyname="username"value="root"/><beans:propertyname="password"value=""/></beans:bean></beans:beans>
opa.... primeira vez q to lidando com login... implementei um login com spring e ta tudo dance certo (ate agora), vamos a pergunta.... qndo eu faço login ele me rediciona para a pagina de index mas mesmo assim se eu não tiver feito o login eu consigo acessar as paginas e fazer manipulações no meu banco... gostaria de saber como faço pra bloquear as paginas.. fazer com que o usuario só acesse se tiver feito o login... alguem???
aplication context
<?xml version="1.0" encoding="UTF-8"?><beans:beansxmlns="http://www.springframework.org/schema/security"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:beans="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security-3.0.xsd"><httpauto-config="true"use-expressions="true"><intercept-urlpattern="/index.jsf"access="hasRole('ROLE_USER')"/><form-loginlogin-page="/login.jsf"authentication-failure-url="/login.jsf?erro=true"default-target-url="/index.jsf"/></http><authentication-manager><authentication-provider><jdbc-user-servicedata-source-ref="dataSource"users-by-username-query="SELECT login, senha, 'true' as enable FROM funcionario WHERE login=?"authorities-by-username-query="SELECT login, authority FROM funcionario WHERE login=?"/></authentication-provider></authentication-manager><beans:beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><beans:propertyname="url"value="jdbc:mysql://localhost:3306/wesley"/><beans:propertyname="driverClassName"value="com.mysql.jdbc.Driver"/><beans:propertyname="username"value="root"/><beans:propertyname="password"value=""/></beans:bean></beans:beans>
Cara pelo que eu vi no teu código é o seguinte...
Você falou que na tua página index só poderia ser acessada por um usuário do tipo role_user, mas em nenhum momente vc falou que as outras páginas da sua aplicação teriam que ser bloqueadas...
Esse código abaixo mostra como seria a maneira mais correta de fazer isso...
Repare que a página de login eu coloquei no access o "permitAll" isso quer dizer que todos os usuários poderão acessar a página de login..
Na minha aplicação eu tenho um pacote chamado de comAutenticacao, e dentro dele eu deixo todas as páginas que precisam ser autenticadas.....
ai como eu coloquei no access o "isAuthenticated()" que diz que todas as páginas que estão dentro desse pacote só serão acessadas se o usuário tiver autenticado...
Caso alguem tente acessar mudando a url que é o teu caso, ele não vai conseguir e será redirecionada para a página de login conforme foi definido na tag access-denied-page="/login.xhtml"......
narutor99 obrigado pela força… entao pelo que entendi eu posso criar uma pasta dentro de webContent e colocar todas as paginas lá dentro, ai eu faço o bloqueio pra todas aquelas paginas de dentro daquela pagina assim não preciso bloquear pagina por pagina? é isso?
vlw
N
narutor99
michelorth_92:
narutor99 obrigado pela força… entao pelo que entendi eu posso criar uma pasta dentro de webContent e colocar todas as paginas lá dentro, ai eu faço o bloqueio pra todas aquelas paginas de dentro daquela pagina assim não preciso bloquear pagina por pagina? é isso?
vlw
Seria isso mesmo…
Você cria um pacote e coloca todas as suas páginas que vai precisar de autenticação dentro…
Dai vc não precisa fazer o bloqueio de página por página…
Vc pode também criar vário pacotes…
ex: administrador, user, financeiro…
e usar uma tag access="hasRole(‘ROLE_USER’) para cada um ex: