📘
SolidStart で Basic 認証を実装する
はじめに
SolidStart で Basic 認証を実装してみました。
SolidStart 関連の情報はまだあまり出回っておらず、役に立つかもしれないので記事として残しておきます🙋
実装
以下のように実装しました。
entry-server.tsx
import { StartServer, createHandler, renderAsync } from 'solid-start/entry-server';
export default createHandler(
+ ({ forward }) => {
+ return async (event) => {
+ const basicAuth = event.request.headers.get('authorization');
+
+ if (basicAuth) {
+ const authValue = basicAuth.split(' ')[1];
+ const [user, pwd] = atob(authValue).split(':');
+
+ if (user === 'username' && pwd === 'password') {
+ return forward(event);
+ }
+ }
+
+ return new Response('Unauthorized', {
+ status: 401,
+ headers: {
+ 'WWW-Authenticate': 'Basic realm="Secure Area"',
+ },
+ });
+ };
+ },
renderAsync((event) => <StartServer event={event} />),
);
これで Basic 認証が行えるようになります。
Discussion