Kør projektet med:
npm run dev i fitness-next.
Next.js er et avanceret React-framework designet til at bygge produktionsklare webapplikationer. Det tilbyder:
getServerSideProps og getStaticProps.components mappen.useState.use client.Eksempel på mixing:
layout.tsx):
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<header>
<h1>My App</h1>
</header>
{children}
</body>
</html>
);
}
Header.tsx):
'use client';
const Header = () => {
const [user, setUser] = useState(null);
return <h1>{user ? `Welcome, ${user.name}` : 'Welcome!'}</h1>;
};
export default Header;
pages mappen.getStaticProps og getServerSideProps til datastyring.app mappen.Eksempel på App Router:
// filepath: /src/app/layout.tsx
export default function Layout({ children }) {
return (
<div>
<header>
<h1>My Fitness App</h1>
</header>
<main>{children}</main>
</div>
);
}
Forskelle mellem App Router og Pages Router:
| Feature | App Router | Pages Router |
|---|---|---|
| Routing | Dynamisk routing med mapper | Filbaseret routing |
| Datahentning | React Server Components | getServerSideProps, getStaticProps |
| Layout-deling | Indbygget med layout.tsx |
Manuel opsætning |
| Performance | Bedre via streaming og Suspense | Traditionel server-rendering |
localStorage eller cookies.Eksempel på login med JWT:
const login = (jwt: string) => {
const decodedToken = decodeJWT(jwt);
localStorage.setItem('jwt', jwt);
setUser({ jwt, role: decodedToken.role });
};
Eksempel: Beskyttelse af sider:
if (user.role !== 'admin') {
return <p>Access Denied</p>;
}
Middleware til adgangskontrol:
export function middleware(req) {
const token = req.cookies.get('jwt');
if (!token) return NextResponse.redirect('/login');
return NextResponse.next();
}
Denne struktur gør det lettere at forstå og besvare de spørgsmål, der er stillet.
Authentication og authorization er kernefunktioner i Next.js, der sikrer, at brugere kan identificeres og gives de korrekte adgangsrettigheder.
localStorage eller cookies.Eksempel på JWT-implementering i login:
const login = (jwt: string) => {
const decodedToken = decodeJWT(jwt);
localStorage.setItem('jwt', jwt);
setUser({ jwt, role: decodedToken.role });
};
Eksempel på rollebaseret adgangskontrol:
if (user.role !== 'admin') {
return <p>Access Denied</p>;
}
Middleware til adgangskontrol:
export function middleware(req) {
const token = req.cookies.get('jwt');
if (!token) return NextResponse.redirect('/login');
return NextResponse.next();
}
Hvor det bruges i projektet:
I fitness-next er authentication og authorization implementeret med JWT. Brugerens token gemmes i localStorage, og rollen (accountType) bruges til at beskytte sider. For mere detaljer, se auth-context.tsx.