OAuth2简单示例中的注入问题

时间:2020-02-04 15:06:58

标签: java oauth-2.0 jersey jax-rs jersey-2.0

我试图用java(没有spring)做一个简单的OAuth2例子,但是当我尝试注入sistem的一个类(TokenDao)时,出现了这个错误:

migrate

我这样做只是为了学习OAuth2,所以我不使用数据库或其他想法,在getToken上我将“ usuario”和“ senha”连接起来。

有课程:

类别:游戏(网络服务)

javax.servlet.ServletException: A MultiException has 3 exceptions.  They are:
1. org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=TokenDao,parent=Game,qualifiers={},position=-1,optional=false,self=false,unqualified=null,903415256)
2. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of br.com.caixa.rest.servicos.Game errors were found
3. java.lang.IllegalStateException: Unable to perform operation: resolve on br.com.caixa.rest.servicos.Game

Classe:TokenDao

public class Game {

    @Inject
    private TokenDao td;

    @Inject
    private HttpServletRequest req;

    private List<Jogo> lista = new ArrayList<Jogo>();

    private List<Jogo> geraLista(){
            lista.add(new Jogo("Chrono Trigger", "RPG"));
            lista.add(new Jogo("the witcher 3", "Action RPG"));
            lista.add(new Jogo("Star Craft 2", "RTS"));
            lista.add(new Jogo("Fire Emblem Tree Houses", "Strategy"));

            return lista;
    }

    @GET
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Jogo retUmJogo(){
        Jogo j = new Jogo("Chrono Trigger", "RPG");     
        return j;
    }

    @GET
    @Path("/jogos")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Jogo> listaJogos(){
            List<Jogo> lista = geraLista();

            return lista;
    }

    @POST
    @Path("/usuToken")
    @Produces({MediaType.APPLICATION_JSON})
    @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN})
    public String listaTeste(Login login){
        this.td.insereToken(login.getToken());
        return login.getToken();
    }


    public Response cadastraJogo(Jogo jogo){
        Response unauthorized = Response.status(Response.Status.UNAUTHORIZED).build();
        try {
            OAuthAccessResourceRequest oauthRequest = new OAuthAccessResourceRequest(req);
            String accessToken = oauthRequest.getAccessToken();
            if(td.validaToken(accessToken)){
                lista.add(jogo);
            }else{
                return unauthorized;
            }
            return Response.status(Response.Status.OK).build();
        } catch (Exception e) {
            return unauthorized;
        }

    }

Classe:登录

@ApplicationScoped
public class TokenDao {
    List<String> tokens =  new ArrayList<String>();

    public void insereToken(String token){
        tokens.add(token);
    }


    public Boolean validaToken(String token){
        return tokens.contains(token);
    }

}

0 个答案:

没有答案
相关问题