javascript - Next auth ile typescript kullanarak getSession
API yollarında next-auth getSession yöntemini böyle kullanıyorum
const mySession = await getSession({ req });
Ben mySession’in tipinin bu olduğundan eminim
type SessionType = {
user: {
email: string;
};
};
Ben mySession üzerine fareyi getirdiğimde bu şekilde görüntüleniyor
const mySession: Session | null
Bu ya null olabilir ya da Session türünde olabilir.
Türü SessionType ile nasıl geçersiz kılabilirim
Bunu denedim
const mySession = await getSession<SessionType>({ req });
Bu bana bir hata veriyor
0 tür argümanı bekleniyordu, ancak 1 alındı.
getSession metodunun türünü nasıl değiştiririm?
Cevap #1
Yöntemin null döndürebilmesinin nedeni, API'nizin kullanıcı/sesleyicisinin aslında doğrulanmamış olma olasılığıdır. Bu yüzden gerçekten bunu yapmak isteyeceğinizi sanmıyorum. Bunun yerine, bunu şu şekilde gerçek anlamda kullanabilirsiniz:
const session = getSession({req});
if(!session) return res.status(401).end();
// From now on session is sure to not be null and you can do whatever you want with it
Eğer gerçekten bir oturumun alabileceği değeri değiştirmek için geçerli bir kullanım durumunuz varsa, belki bu faydalıdır:
Hata alıyorsunuz çünkü getSession sizden bir tür belirtmenizi beklemiyor ya da başka bir deyişle, getSession generics kullanılarak uygulanmamış.
Oturumu uzatmak için yapabileceğiniz şey şudur:
- Bir sonraki kimlik doğrulama seçeneklerinde bir oturum geri çağrısı sağlayarak döndürülen nesneyi genişletin
- next-auth modülünün üzerine yaz
Her iki adım da burada açıklanmıştır
