A instalação e configuração do Spring Security é a mesma de um aplicativo que já usa Spring Web MVC. MAS o pulo do gato é resolver isso através do shell do Spring Roo, com mais um comando esperto.
Comece definindo a estrutura do aplicativo no Spring Roo, depois execute o comando:
_> security setup
Altere o arquivo applicationContext-security.xml indicando o padrão de url que aciona o mecanismo de segurança segurança, por exemplo:
<intercept-url pattern="/pastaProtegida/**" access="isAuthenticated()" />
Pronto! É só empacotar [perform package] e rodar a aplicação [
mvn tomcat:run]
.Mas... o que o Roo faz por trás das cortinas?
- Primeiro configura a dependência do Spring Security (pom.xml);
- Depois cria um arquivo xml com as diretrizes de segurança: applicationContext-security.xml
<http auto-config="true" use-expressions="true"> <form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" authentication-failure-url="/login?login_error=t"/> <logout logout-url="/resources/j_spring_security_logout"/> <!-- primeiro so admin, segundo qualquer autenticado, terceiro e quarto nao precisa de login --> <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')"/> <intercept-url pattern="/restrito/**" access="isAuthenticated()" /> <intercept-url pattern="/free/**" access="permitAll" /> <intercept-url pattern="/**" access="permitAll" /> </http> <!-- define o mecanismo de seguranca simples (estatico) com os usuarios: admin/admin e user/user --> <authentication-manager alias="authenticationManager"> <authentication-provider> <password-encoder hash="sha-256"/> <user-service> <user name="admin" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" authorities="ROLE_ADMIN"/> <user name="user" password="04f8996da763b7a969b1028ee3007569eaf3a635486ddab211d512c85b9df8fb" authorities="ROLE_USER"/> </user-service> </authentication-provider> </authentication-manager>
- Cria uma página com formulário de login:
... <form action="/static/resources/j_spring_security_check" method="POST"> <div> <label for="j_username"> <spring:message code="security_login_form_name" /> </label> <input id="j_username" type='text' name='j_username' /> ... </div> <br /> <div> <label for="j_password"> <spring:message code="security_login_form_password" /> </label> <input id="j_password" type='password' name='j_password' /> ... </div> ... </form> ...
- Configura a página de login no arquivo view.xml (usado pelo Tiles):
<definition extends="public" name="login"> <put-attribute name="body" value="/WEB-INF/views/login.jspx"/> </definition>
- Declara o filtro do Spring Security (springSecurityFilterChain) no web.xml:
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter>
- Configura a página de login no webmvc-config.xml:
<mvc:view-controller path="/login"/>
Veja mais sobre Spring Security.
Veja também mais sobre Spring Roo no Globalcoders e aqui no blog.
Spring Roo: Mais agilidade com qualidade!
http://twitter.com/edermag
http://www.yaw.com.br/
1 comment:
Se minha aplicação for com JSF, tem alguma forma de eu adicionar o security pq eu nao encontro no help.
Post a Comment