0
我有一個在端口8080
上運行的angularjs前端,端口3000
上有後端。 後端當前使用POSTMAN工作正常。在localhost上以angularjs身份獲取未經授權的401:3000爲後端
但是,當我將它們結合起來,我得到了後端以下
我的設置是:
//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)
})
})
}}
})
任何人都知道可能是什麼問題?
401不是CORS問題 –
這是授權問題,請再次查看spring安全性。 請將'header'傳遞給'ADMIN'而不是'admin'。 –
@ user3145373我的用戶'admin'是一個內存中的角色爲'ADMIN'的用戶。我已經考慮到春季安全無法解決問題。你是什麼意思看標題? – jemrug