Muốn tiếp cận session từ _app.tsx

98 lượt xem

profile picture

Ẩn danh

Ngày 15 tháng 06 năm 2023

Mình đang dùng next-auth.js, với next.js v13 Mình đang muốn làm chức năng là: khi user đăng ký thành viên mới thì sẽ chuyển họ qua một page khác. Theo mình thì vị trí phù hợp cho code này là ở _app.tsx nhưng mà session nhận từ pageProps thì lại là undefined, nên mình không biết là liệu mình có cách tiếp cận session nào khác ko nhỉ?

Đánh giá câu hỏi ngay!

Hãy ấn Up Vote với những câu hỏi cụ thể và chi tiết

Hãy ấn Down Vote với những câu hỏi chưa rõ ràng Careerly sẽ nhắc người hỏi chỉnh sửa lại.

1 câu trả lời

BEST

Ảnh đại diện của phuc phan

Hình như là bạn phải cần có code ở server side á. Trước khi server nhận được giá trị session thì ở client session sẽ bị undefined. vd) trong getServersideProps của posts page, sau khi gọi getSession của next-auth thì dữ liệu session sẽ được gửi về client pageProps. Bạn có thể tiếp cận pageProps từ _app.tsx Có nhiều vị trí để build logic làm redirect theo từng giá trị của session. Client, server side (nextjs getServersideProps, nextjs middleware, next-auth callback) tất cả đều được, bạn có thể chọn một trong số này sau khi tìm hiểu về điểm mạnh yếu của từng vị trí. Trong vd trên thì mình có thể tạo theo logic là redirect nếu ko có session trong geServersideProps của posts page. Nếu bạn cần làm logic redirect kiểu này thì từ next v12 đã hỗ trợ middleware để build.Nhưng vì hạn chế môi trường edge runtime nên hiện tại chỉ hỗ trợ phương thức session ứng dụng jwt thôi í. - https://next-auth.js.org/configuration/nextjs#middleware Còn trong case của bạn thì có thể nghiên cứu dùng callback thử. Bạn có thể tham khảo tài liệu chính thức của next-auth tại đây: https://next-auth.js.org/configuration/callbacks

Đăng ký ngay bây giờ để đọc toàn bộ câu trả lời!

Cộng đồng lập trình viên sẽ giải đáp tường tận cho bạn.

Xem thêm

Đồng ý với Điều khoản dịch vụ Chính sách bảo mật của Careerly

Bạn đã có tài khoản rồi?

Đăng ký ngay bây giờ để đọc toàn bộ câu trả lời!

Cộng đồng lập trình viên sẽ giải đáp tường tận cho bạn.