2016-12-10 2 views
1

Bitte jemand helfen mir, dieses Problem zu lösen. Ich habe Feder-Controller, die jede Post-Anfrage mit dem richtigen Benutzernamen und Passwort behandeln können. Ich möchte diese Winkel 2. in Zur Zeit zugreifen, wenn ich dies mit Postbote am Zugriff auf diese Arbeit gut, aber ich dies noch nicht für den Zugriff durch Winkel 2. das ist meine Feder-Controller:Zugriff auf Feder-API mit JWT und x-www-Form-urlencoded in Winkel 2

@RequestMapping(value = "/login", method = RequestMethod.POST) 
    public ResponseEntity<Map<String, Object>> login(@RequestParam String user_name, @RequestParam String password) 
      throws IOException { 

     String token = null; 
     User appUser = useri.findByUserName(user_name); 
     Map<String, Object> tokenMap = new HashMap<String, Object>(); 
     if (appUser != null && appUser.getUser_password().equals(password)) { 
      token = Jwts.builder().setSubject(user_name).claim("roles", appUser.getRoles()).setIssuedAt(new Date()) 
        .signWith(SignatureAlgorithm.HS256, "secretkey").compact(); 
      tokenMap.put("token", token); 
      tokenMap.put("user", appUser); 
      return new ResponseEntity<Map<String, Object>>(tokenMap, HttpStatus.OK); 
     } else { 
      tokenMap.put("token", null); 
      return new ResponseEntity<Map<String, Object>>(tokenMap, HttpStatus.UNAUTHORIZED); 
     } 
    } 

ist dies die print mein Postbote Anfrage Ergebnis:

login(username: string, password: string): Observable<boolean> { 
    return this.http.post('http://localhost:8090/login', JSON.stringify({ user_name: username, password: password })) 
     .map((response: Response) => { 
      // login successful if there's a jwt token in the response 
      let token = response.json() && response.json().token; 
      if (token) { 
       // set token property 
       this.token = token; 

       // store username and jwt token in local storage to keep user logged in between page refreshes 
       localStorage.setItem('currentUser', JSON.stringify({ user_name: username, token: token })); 

       // return true to indicate successful login 
       return true; 
      } else { 
       // return false to indicate failed login 
       return false; 
      } 
     }); 

req:

image

ich so diesen Code in Winkeln 2 aber nicht versucht hatte, Sie scheint keine Antwort zu geben. Bitte geben Sie mir eine Lösung, jede Hilfe wird sehr respektiert.

Antwort

0

Import URLSearchParams von @angular/http

import { URLSearchParams } from '@angular/http'; 

und verwenden

let urlSearchParams = new URLSearchParams(); 
urlSearchParams.append('user_name', username); 
urlSearchParams.append('password', password); 
let body = urlSearchParams.toString() 
+0

ich weiß nicht wie, aber wenn ich es in Browser ausgeführt werden, so heißt http: // localhost: 3000/node_modules/@ eckig/http/bundles/http.umd.js/src/url_search_params 404 (nicht gefunden), habe ich diesen Pfad eingecheckt und ich fand diese Datei ... –

+0

Wenn Sie mir das Folgende geben könnten, kann das helfen, das zu beheben. Version von Angular2? Build-System? Angular-Cli? –

+0

"@ angular/common": "~ 2.2.1", ich denke meine eckige Version 2.2.1, ich habe es in meinem Paket.json. "systemjs": "0.19.40", und das ist nicht cli-Version –