For our back-end here at Plato, we decided to give NestJS a try. NestJS is easy to set up, it helps consistency and modularity, and integrate easily with the powerful TypeORM library. As our POC started to grow, we wanted to improve the robustness of our project by adding integration tests. We already had a decent code coverage but unit tests are not quite enough as it forces us to hide the comple
免責事項 社内向けに展開するように雑にまとめました Next.jsの知見が深くない人がリードしてPoCを立ち上げなきゃいけなくなったが、社内的にはNext.jsを推奨しているみたいな場面を想定しています なので自信ないところも多いですが割と断言するように心がけて書いています PoCの立ち上げ想定なので、jest/Storybookなど内部品質面についてあまり深く書くことを避けています ほぼ自分の知識だけで書いており私見も多いですし、そもそも自分自身がトップクラスの知識や視座を有しているわけでもないので、まずは以下の話を理解はした上で、踏襲するかどうかは別途他記事やGitHub、公式ドキュメントなどを漁って判断することを推奨 App RouterかPages Routerか 2023年末現在まだApp Routerは技術記事が足りてきている印象ではないため、社内でノウハウを積極的に貯めていく
はじめに NestJS の公式ドキュメントに載っている認証では、ログイン済みのユーザー情報を JWT で管理していますが、これをセッションで管理するように変更する方法を紹介します。 ログインの実装 まずは公式ドキュメントに従ってログイン機能を実装します。 以下は公式ドキュメントに書いてあるコードを少しアレンジして転記しました。 公式ドキュメントの内容についてしっかり理解している方は読み飛ばしてください。 $ yarn add @nestjs/passport passport passport-local $ yarn add --dev @types/passport-local $ nest generate module auth $ nest generate service auth $ nest generate module users $ nest generate ser
express-sessionを利用するExpressでCookieによるセッション管理を行う場合に利用されるモジュールは以下の2つです。 今回は以下の理由からexpress-sessionを採用することにします。 Cookie内には少量の単純なデータ(プリミティブな値)のみしか保存できないセッションデータがブラウザから閲覧出来てしまうexpress-session+Redisを実装するそれでは実装例を紹介します。express-sessionはデフォルトではサーバーメモリ上でセッションデータを保管しますが、実際の環境での稼動向きではないため通常外部ストレージを利用します。 今回はRedisを導入しますが、動作検証だけしたい方はストレージなしでも稼働確認できるので以下の事前準備はスキップして問題ありません。 (事前準備)Redisの用意まずは事前準備としてRedisをDockerコンテナで
ブラウザからサーバにリクエストが届く SSRに必要なPropsをリクエストする Propsを取得する SSRを実行する ブラウザにHTMLでレスポンスを返す ブラウザ上でCSRを実行する レンダリング結果をマウントする マウント後、ブラウザ上で副作用を実行する 以下ではそれぞれの過程について解説をします。 ブラウザからサーバにリクエストが届く ブラウザでURLにアクセスをするとサーバにリクエストが届きます。 SSRに必要なPropsをリクエストする サーバでUIを構築するにあたり、必要となるPropsをリクエストします。 PropsのリクエストはgetServerSideProps()で行います。 API経由でデータを取得している場合はAPIサーバへリクエストすることになります。 Propsを取得する リクエストしたPropsが返され、SSRの準備が整います。 SSRを実行する 取得したP
このようにさまざまなデコレータが用意されていますが、今回はサンプルで利用するデコレータに絞って説明します。他のデコレータについては、NestJSの公式ドキュメントなどを参照してください。 依存性注入(DI) 依存性注入(DI、Dependency Injection)とは、クラスの依存関係を解決する仕組みです。NestJSでは、依存性注入を使ってクラスの依存関係を解決します。 クラスの依存関係とは、クラスが他のクラスに依存している関係のことです。例えば、次のようなクラスAがあったとします。このクラスは他のクラスに依存していません。@Injectable()デコレータを使って、サービスを定義します。 @Injectable() class A { constructor() {} } そして、次のようなクラスBがあったとします。このクラスは、@Inject()デコレータを使って依存性を注入し
$ npm i --save @nestjs/passport passport passport-local @nestjs/jwt passport-jwt $ npm i --save-dev @types/passport-local @types/passport-jwt passportは、nodejs でよく使われている認証ライブラリ。 passport-localは、ユーザー名とパスワードでログインできる機能を実装できるライブラリ。 passport-jwtは、JWTの検証などをするためのライブラリ。 ※ passport は、passport-local や passport-jwt などのライブラリを戦略( strategy )と言うので、覚えておいた方が良いかもしれません。 Passport recognizes that each application has u
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く