Ich benutze Restangular mit Spring oauth Sicherheit und auf der Clientseite benutze ich Restangular für Login-Anfrage.Basis-Authentifizierung des Frühlings mit Restangular
-Code in OAuth2ServerConfiguration:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients
.inMemory()
.withClient("clientapp")
.authorizedGrantTypes("password", "refresh_token")
.authorities("USER")
.scopes("read", "write")
.secret("abc");
}
Anmeldung mit Postbote braucht diese Konfigurationen:
1-Set Authorization as "Basic Auth".
2-Set username,password as {"username":"clientapp","password":"abc"}//credentials to access server side
3-In request body through "x-www-form-urlencoded" three parameters are sent.
{"username":"[email protected]","password":"abc123","grant_type":"password"}//credentials to login which are checked from database.
Dies wird eine erfolgreiche tun login.but ich kann nicht verstehen, wie diese Konfigurationen in Angular JS Restangular Aufruf zu verwenden, .
derzeit versuche ich mit diesem.
In Config:
RestangularProvider.withConfig(function (RestangularConfigurer) {
return RestangularConfigurer.setDefaultHeaders({ "Authorization": "Basic Y2xpZW50YXBwOkxNUw==",
"username":"clientapp",
"password":"abc",
"Content-type": "application/x-www-form-urlencoded; charset=utf-8"
});
In Controller:
Restangualar.all("oauth/login").post({username;$scope.user.username,
password:"$scope.user.password","grant_type":"password"}).then(function(){
console.log(res);
});
Aber ich bin immer diese Fehlermeldung:
error:"unauthorized",error_description:"Full authentication is required to access this resource"
in Browser.
Hinweis: Diese Ressource ist nicht gesichert.
Jede Lösung ???
Update: ich hinzugefügt Haupt Informationen vergessen, dass mein Frontend mit Winkel wird (durch xampp) während Frühling Login Backend ist auf localhost unabhängig auf localhost läuft: 8080 ..
Fehler in Netzwerk-Register:
2-
public void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.anyRequest().permitAll()
//.antMatchers("/users").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/oauth/token").permitAll()
.and().csrf().disable();
}
3-
endpoints
.tokenStore(this.tokenStore)
.authenticationManager(this.authenticationManager)
.userDetailsService(userDetailsService)
.addInterceptor(new HandlerInterceptorAdapter() {
public boolean preHandle(HttpServletRequest hsr, HttpServletResponse rs, Object o,FilterChain chain) throws Exception {
rs.setHeader("Access-Control-Allow-Origin", "*");
rs.setHeader("Access-Control-Allow-Methods", "GET,OPTIONS,POST");
// rs.setHeader("Access-Control-Max-Age", "7200");
rs.setHeader("Access-Control-Allow-Headers", "Origin, X- Requested-With, Content-Type, Accept, Authorization");
HttpServletRequest httpServletRequest = (HttpServletRequest) hsr;
if (httpServletRequest.getMethod().equalsIgnoreCase("OPTIONS")) {
chain.doFilter(hsr, rs);
} else {
// In case of HTTP OPTIONS method, just return the response
return true;
}
return false;
}
});
hilft ich gleiche Konfiguration in der http verwendet haben und auch mit restangular im Frontend auf der gleichen Domain (beide auf localhost: 8080). es funktionierte dort, aber das gleiche funktioniert nicht auf einer separaten Domain. –
Wenn das der Fall ist, klingt es wie ein CORS-Problem, haben Sie überprüft, was die fehlgeschlagene Antwort ist, wenn es fehlschlägt? – pedromarce
Fehler: "unauthorized", error_description: "Für den Zugriff auf diese Ressource ist eine vollständige Authentifizierung erforderlich" –