Go学習日誌 #2022/06/30

バグ修正

実施事項

以下のバグを修正
・他のユーザの予定が編集できてしまう
・未ログイン状態で/lifelogなどに遷移するとステータスコード500が返ってしまう(本来はログイン画面表示または403を返したい

他のユーザの予定が編集できてしまう問題

原因は、ユーザ識別子が被っていたこと。
Auth0の情報のaudが識別子と思っていたが、識別子はsubであるとのこと。

なので、subに変更したら問題が解決した。

未ログイン状態の処理

ginのグループのルーティングとミドルウェアを使って下記の様にした。

func New(auth *authenticator.Authenticator) *gin.Engine {
	router := gin.Default()

	...

	// ログイン処理のハンドラ
	router.GET("/login", login.Handler(auth))
	// コールバックハンドラ
	router.GET("/callback", callback.Handler(auth))

	// 未ログイン時に表示させたくない画面
	auth_group := router.Group("/", authRequired())
	{
		lifelog_group := auth_group.Group("/lifelog")
		{
                                       ...
		}
		remarks_group := auth_group.Group("/remarks")
		{
                                       ...
		}
		auth_group.DELETE("/logout", logout.Handler)
	}

	return router
}

func authRequired() gin.HandlerFunc {
	return func(c *gin.Context) {
		session := sessions.Default(c)
		profile := session.Get("profile")
		if profile == nil {
			// 未ログインの場合403を返す
			c.Status(http.StatusForbidden)
			c.Abort()
		}
		c.Next()
	}
}

その他

次回はHerokuで動作させてみる。

この記事が気に入ったらサポートをしてみませんか?