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:
1 | < 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | < 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | ... < 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):
1 2 3 | < 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:
1 2 3 4 5 6 | < 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:
1 | < 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