如何使用刷新令牌在fastapi中获取访问令牌

时间:2020-10-15 07:02:59

标签: oauth-2.0 fastapi

我想实现refresh_token端点。但是,我对如何使用刷新令牌令牌来获取访问令牌一无所知。我在这里生成了刷新令牌,它位于登录/访问令牌端点中。我是否首先需要存储此刷新令牌,否则客户端必须发送它?

我也不确定下面是否是生成刷新令牌的正确方法。

@app.post("/login/access-token", response_model=schema.Token)
def login(dbs: Session = Depends(get_db), form_data: OAuth2PasswordRequestForm = Depends()) -> Any:
    """
    OAuth2 compatible token login, get an access token for future requests
    """
    print('In login')
    user = crud.authenticate(
        dbs, email=form_data.username, password=form_data.password
    )
    # print('In login user', user)

    if not user:
        raise HTTPException(status_code=400, detail="Incorrect email or password")
    elif not crud.is_active(user):
        raise HTTPException(status_code=400, detail="Inactive user")
    access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
    userdata = {
        'user_id': user.id,
        'email': user.email,
        'provider_type': user.provider_type,
        'is_active': user.is_active,
        'is_super_user': user.is_super_user
    }

    print('In login after token')
    access_token = security.create_access_token(
        user.id, expires_delta=access_token_expires
    )

    refreshdata = {'token_type': 'refresh', 'user_id': user.id}
    refresh_token = security.create_access_token(
        refreshdata, expires_delta=timedelta(days=settings.REFRESH_TOKEN_EXPIRE_DAYS)
    )

    # print('refresh_token', refresh_token)

    return {
        # "access_token": security.create_access_token(
        #     user.id, expires_delta=access_token_expires
        # ),
        "access_token": access_token,
        "refresh_token": refresh_token,
        "token_type": "bearer",
        "user": userdata
    }

1 个答案:

答案 0 :(得分:0)

这就是我的方法。

x,y,z,n = input() # NOT CONVERTING THE INPUT TO 'INT' HERE  

l = []  

for a in range(0,int(x)): # converting the input to INT  
    for b in range(0,int(y)): # converting the input to INT  
        for c in range(0,int(z)): # converting the input to INT  
            if a+b+c!= n:  
                l.append([a,b,c])  
print(l)