2017-03-07 46 views
0

我有一個在端口8080上運行的angularjs前端,端口3000上有後端。 後端當前使用POSTMAN工作正常。在localhost上以angularjs身份獲取未經授權的401:3000爲後端

但是,當我將它們結合起來,我得到了後端以下

enter image description here

我的設置是:

//Global CORS configuration 
@Bean 
public WebMvcConfigurer corsConfigurer() { 
    return new WebMvcConfigurerAdapter() { 
     @Override 
     public void addCorsMappings(CorsRegistry registry) { 
      registry.addMapping("/**").allowedOrigins("*"); 
     } 
    }; 
} 

安全性設定爲(不登錄頁面,但HTTP基本):

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
     .csrf().disable() 
     .authorizeRequests() 
     .antMatchers("/**").hasAnyRole("ADMIN", "USER") 
     .and() 
     .httpBasic() 
     .and() 
     .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 

} 

@Bean 
public CustomBasicAuthenticationEntryPoint getBasicAuthEntryPoint(){ 
    return new CustomBasicAuthenticationEntryPoint(); 
} 

前端角度:

app.factory('SurveysService', function($q, $http) { 

var encodedUserNameAndPassword = btoa('admin:letme1'); 
// $http.defaults.headers.common.Authorization = 'Basic ' + 
// Base64.encode($scope.username + ':' + $scope.password); 

$http.defaults.headers.common['Authorization'] = 'Basic ' + encodedUserNameAndPassword; 
var ss = 'http://localhost:3000'; 
return { 
    getSurveys : function() { 
     return $q(function(resolve, reject) { 
      $http.get(ss+'/surveys?start=1&limit=10').then(function(response) { 
       resolve(response.data) 
      }, 
      function(response){ 
       reject(response) 
      }) 
     }) 

    }} 

}) 

任何人都知道可能是什麼問題?

+0

401不是CORS問題 –

+0

這是授權問題,請再次查看spring安全性。 請將'header'傳遞給'ADMIN'而不是'admin'。 –

+0

@ user3145373我的用戶'admin'是一個內存中的角色爲'ADMIN'的用戶。我已經考慮到春季安全無法解決問題。你是什​​麼意思看標題? – jemrug

回答

0

我的錯誤。我的角度客戶端提供不正確的憑據。一旦我糾正這些,這一切都很好。感謝所有試圖提供幫助的人。

相關問題