É possivel utilizar o Spring Security em um site ?

O Spring Security , já abre a aplicação com uma tela de login… , mas para meu site, não quero que os usuário tenham que fazer login logo de cara, até porque não faz sentido… , vai ter uma area para login dentro do site, alguem sabe como configurar o Spring Security para fazer a validação do login somente quando o usuario for acessar essa opção dentro do site ?

Bom dia.

Pode sim. Eu mesmo tinha um site em Java com uma tela principal de buscas sem necessidade de login, onde usava Spring Security.

Era necessário logar apenas quando o usuário necessitava cadastrar informações.

Basta no seu arquivo de configuração do Spring Security você configura as permissões de acesso apenas com bloqueio geral, apenas com exceção a alguma pasta.

Veja o meu como estava.

<http auto-config="true" use-expressions="true">
		<intercept-url pattern="/index.jsp" access="permitAll" />
		<intercept-url pattern="/public/**" access="permitAll" />
		<intercept-url pattern="/resources/**" access="hasAuthority('ROLE_USER')" />
		<intercept-url pattern="/pages/**" access="hasAuthority('ROLE_USER')" />
		<logout invalidate-session="true" logout-success-url="/public/index.faces" />
		
		<session-management>
		    <concurrency-control expired-url="/public/index.faces" />
		</session-management>

		<form-login login-page="/login.faces"
			authentication-failure-url="/login.faces?erro=true"
			default-target-url="/pages/principal/index.faces" />
			
		<logout logout-success-url="/public/index.faces" />
		<logout delete-cookies="JSESSIONID" invalidate-session="true" />
	</http>

Perceba que com o código abaixo o bloqueio é feito para tudo que existir abaixo da pasta hierárquica ‘pages’

<intercept-url pattern="/pages/**" access="hasAuthority('ROLE_USER')" />

E no código abaixo, permito que o conteúdo que existir dentro da pasta public possa ser acessado sem que o spring-security intercepte.

Tente fazer algo desta forma.

[]'s

muito obrigado pela sua resposta edumatias ! , nesse projeto em questão , não utilizamos xml para configurar , isso pode ser feito através de programação ? (sou novato em SpringSecurity) desde já agradeço a ajuda ! .

Opa,

Pode sim. Confesso que XML para estar configurações está um pouco ultrapassado. Mas ainda utilizei em meu projeto.

Aqui (https://www.klebermota.eti.br/2014/04/22/configurando-o-spring-security-atraves-de-codigo-java-sem-xml/ )

No método configure da classe SecurityConfig você define as questões de permissões de acesso.

Ex:

protected void configure(HttpSecurity http) throws Exception {
http
      .csrf()
      .disable()
      .authorizeRequests()
      .antMatchers("/acesso/erro").permitAll()
      .antMatchers("/bootstrap/**", "/jquery-ui/**", "/extras/**").permitAll()
      .anyRequest().authenticated()
      .and()
      .formLogin()
      .loginPage("/acesso/login").permitAll()
      .loginProcessingUrl("/login").permitAll()
      .usernameParameter("login")
      .passwordParameter("senha")
      .successHandler(new CustomAuthenticationSuccessHandler())
      .failureHandler(new CustomAuthenticationFailureHandler())
      .and()
      .rememberMe()
      .key("remember-me")
      .useSecureCookie(true)
      .and()
      .logout()
      .logoutUrl("/logout")
      .logoutSuccessUrl("/acesso/login").permitAll();
   }

Inicialmente tem-se uma pequena dor de cabeça para configuração inicial.

Mas tem vários materiais que ajudam a configurar.

Tente iniciar esta implementação.

Veja também sobre como utilizar DelegatingFilterProxy

Aqui (https://imasters.com.br/artigo/16693/java/seguranca-passo-a-passo-com-spring-security-30/?trace=1519021197&source=single)

valeu mesmo edumatias, era o que eu tava precisando… com isso vou conseguir configurar tudo certo, muito obrigado pelas dicas e exemplos !

1 curtida

Aqui vai um extra que também é uma configuração sem xml

muito bom cara… lega demais, valeu ai :sunglasses: