2015-07-21 46 views
0

如何在跨平臺上配置spring安全性,例如我有兩個應用程序之一是服務器端,所有java代碼和彈簧安全部分我在做和其他客戶端所有存在角度js和html文件。在Spring引導應用程序跨平臺上的彈簧安全

我想將我在客戶端的自定義登錄頁面與Spring安全性集成,我如何實現這一點,以下是我的Spring安全代碼。

public class AppSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     http 
       .authorizeRequests() 
       .antMatchers("/index.html", "/assests/**", "/app/**", 
         "/**/*.js", "/**/*.css", "/**/*.jpg", "/**/*.png", 
         "/**/*.jpg", "/**/*.gif", "#/index.html", "/home",).permitAll() 
       .anyRequest().authenticated() 
      .and().formLogin() 
      .loginPage("/login").failureUrl("/login?error") 
      .usernameParameter("username") 
      .passwordParameter("password") 
      .and() 
      .addFilterBefore(new AppCORSFilter(), ChannelProcessingFilter.class) 
       .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class) 
       .csrf().disable(); 
} 
} 

這是我的CORS過濾器。

public class AppCORSFilter implements Filter { 

    private static final String ALLOWED_ORIGINS = "*"; 
    private static final String ALLOWED_HTTP_HEADERS = "accept, x-requested-with, access-control-allow-origin,Content-Type,authorization"; 
    private static final String ALLOWED_HTTP_METHODS = "POST,GET,PUT,OPTIONS,DELETE"; 

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 

     //String headerValue = request.getHeaders("Access-Control-Request-Headers"); 
     response.setHeader("Access-Control-Allow-Origin", ALLOWED_ORIGINS); 
     response.setHeader("Access-Control-Allow-Methods", ALLOWED_HTTP_METHODS); 
     response.setHeader("Access-Control-Allow-Headers", ALLOWED_HTTP_HEADERS); 
     response.setHeader("Access-Control-Max-Age", "3600"); 

     HttpServletRequest request = (HttpServletRequest) req; 

     if (request.getMethod().equals("OPTIONS")) { 
      try { 
       response.getWriter().print("OK"); 
       response.getWriter().flush(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      chain.doFilter(req, res); 
     } 
    } 

    public void init(FilterConfig filterConfig) { 
    } 

    public void destroy() { 
    } 
} 

回答

0

您可以使用Redis在您的服務之間共享安全會話。閱讀this文件。你也可以從this link找到它的一個例子。

+0

謝謝@ furkan3ayaktar我很感謝你的回覆,除了Redis服務器之外,還有其他的方法嗎? – Mayur

+0

可能有很多可用的選項,但我使用了Redis和oAuth2解決方案。如果你不想使用redis服務器,也許你可以在你的應用中使用spring的oAuth2支持。但是,它可能比Redis解決方案更復雜。 – furkan3ayraktar

+0

是的,它看起來像oAuth2非常複雜,謝謝你的迴應。 – Mayur

相關問題