2017-02-17 181 views
0

我有網絡應用程序,我想保護我的休息API我遵循一些教程,我成功實現了其餘的API是安全的。 但是當我第一次打電話給我的網頁應用程序添加html文件時,它會顯示我要輸入的登錄區域。 我只是想確保其餘API並不是所有的web應用程序在我的情況
這是我application.properties春季啓動安全休息API與彈簧安全

spring.datasource.url=jdbc:mysql://localhost/geekycoders_myteam 
spring.datasource.username=root 
spring.datasource.password=root 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect 
spring.jpa.hibernate.ddl-auto=update 
spring.jpa.generate-ddl=true 
logging.level.org.springframework.boot.autoconfigure.security=INFO 
security.user.name=admin 
security.user.password=admin 

,這是我SecurityConfig

public class SecurityConfig extends WebSecurityConfigurerAdapter { 
     @Override 
     protected void configure(HttpSecurity http) throws Exception { 
     http 
      .csrf().disable() 
      .authorizeRequests() 
      .antMatchers(HttpMethod.POST, "/api/**").authenticated() 
      .antMatchers(HttpMethod.PUT, "/api/**").authenticated() 
      .antMatchers(HttpMethod.DELETE, "/api/**").authenticated() 
      .antMatchers(HttpMethod.GET, "/api/**").authenticated() 
      .anyRequest().permitAll() 
      .and() 
      .httpBasic().and() 
      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 
     } 
    } 

,這是一個樣本控制器

@RestController 
@RequestMapping("/api/user") 
public class UserController { 

    @Autowired 
    UserRepository userRepository; 

    @RequestMapping("/findall") 
    @ResponseBody 
    public List<User> findall(){ 
     return userRepository.findAll(); 

    } 
    @RequestMapping("/find") 
    @ResponseBody 
    public User getUser(@PathParam("id") int id){ 
     return userRepository.findOne(id); 
    } 

} 

和我有index.html到目錄webapp一些幫助

回答

-1

代碼沒有問題。您需要設置一個默認配置,這將允許其他任何事情。 XML同等的安全性表達可以是這樣的(請確保你把它放在正確的順序):

<security:http use-expressions="true" pattern="/**"> 
    <security:intercept-url pattern="/**" access="permitAll()"/> 
</security:http> 
+0

在這裏我把這個代碼 – medbenjemaa

+0

試這些代碼行.antMatchers(HttpMethod.GET,「/ api/**」)。authenticated().antMatchers(HttpMethod.GET,「/ **」)。permitAll() – sanjeev

+0

謝謝它的工作;) – medbenjemaa

-1

您可以允許訪問你的一些目錄:

http.authorizeRequests().antMatchers("/css/**", "/js/**", "/images/**").permitAll(); 
+0

我需要允許在不提示登錄的情況下訪問我的html文件 – medbenjemaa

+0

您可以將/ html/**添加到列表中以訪問位於該d下的所有文件irectory。他們是路徑,在我的情況下,我把文件放在不同的目錄中。如果你的文件在根目錄下,你可以簡單地添加「/ **」。 –