Какова лучшая практика для разработки API для получения определенного c профиля пользователя с токеном Jwt? - PullRequest
0 голосов
/ 06 апреля 2020

Предположим, у меня есть система аутентификации, которая использует токен jwt для авторизации. Поэтому после входа пользователя я хочу перенаправить текущую веб-страницу на страницу его / ее профиля. Так вот как я это делаю, пользователь должен получить этот API один раз "domain / api / v1 / signin" после того, как он вернется со статусом 200 и токеном jwt. Я перенаправлю на страницу профиля и получу другой API, который даст ему / ее профиль информация для отображения на странице. Я могу думать о нескольких стратегиях, но не знаю, какая из них будет лучшей или небезопасной.

первый слой, выборка в "домен / api / v1 / profile", так как у меня есть только токен, чтобы указать, кто этот пользователь. Я просто позволю бэкэнду извлечь токен и получить профиль.

@RequestMapping(value = "/profile", method = RequestMethod.GET)
public ResponseEntity<?> getProfile(Authentication authentication){
    Optional<Account> account = this.accountService.getAccountByName(authentication.getName());
    if(account.isPresent()){
        return new ResponseEntity<>(account.get(),HttpStatus.OK);
    }
    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}

второй уровень, выбрать «domain / api / v1 / accounts / {username}», так что вместо хранения только токена после если пользователь вошел в систему, я сохраню токен и имя пользователя в localStorage, чтобы использовать его позже

@RequestMapping(value = "/accounts/{username}", method = RequestMethod.GET)
public ResponseEntity<?> getAccountByName(@PathVariable("username") String username){
    Optional<Account> account = this.accountService.getAccountByName(username);
    if(account.isPresent()){
        return new ResponseEntity<>(account.get(),HttpStatus.OK);
    }
    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}

, что является лучшим способом сделать это.

...