質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Revel

Revelは、Go言語のフレームワーク。レスポンスが高速であることが特徴で、Webアプリケーションに必要な機能も豊富です。ルーティングやバリデーション、テンプレートエンジン、DB処理、テスト支援といった多くの機能を備えています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

0回答

664閲覧

[Go] Revelで「Cookieがセットされてなければリダイレクト処理」を関数としてメソッドの外に書いて呼び出したい

DeepRoastBeans

総合スコア80

Revel

Revelは、Go言語のフレームワーク。レスポンスが高速であることが特徴で、Webアプリケーションに必要な機能も豊富です。ルーティングやバリデーション、テンプレートエンジン、DB処理、テスト支援といった多くの機能を備えています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2021/10/09 04:40

GoのRevelでcookieを発行したログイン機能を作っています。
Controllerのメソッドで、CookieのKeyの値がなければ、ログインページにリダイレクトする処理を以下のように書いているのですが、
この処理を各ページのメソッド内で毎回書くのは冗長なので、関数として呼び出すようにしたいのですが、どのように書いたら良いのでしょうか?

Go

1func (c App) Index() revel.Result { 2 3 name := c.Session["userName"] 4 if name == nil { 5 return c.Redirect(App.Login) 6 } 7 8 return c.Render() 9}

Cookieの発行

Go

1func (c App) Auth(name string, password string) revel.Result { 2                // 省略 3 user := []models.Users{} 4 DB.Where("name = ?", name).First(&user) 5 6 if len(user) != 0 { 7 hashPassword := getMD5Hash(password) 8 if user[0].Password == hashPassword { 9 c.Session["userName"] = name 10 c.Session.SetNoExpiration() 11 c.Flash.Success("Welcome, " + name) 12 return c.Redirect(App.Index) 13 } 14 } 15 16 c.Flash.Error("Login failed") 17 return c.Redirect(App.Login) 18}

試したこと

以下のように書いて、メソッド内でLogined()を呼び出そうとすると undefined: Logined とエラーになってしまいます。

Go

1func (c App) Logined() revel.Result{ 2 name := c.Session["userName"] 3 fmt.Println(name) 4 5 if name == nil { 6 return c.Redirect(App.Login) 7 } 8 return nil 9}

Go

1func (c App) Index() revel.Result { 2 3 Logined() 4 5 return c.Render() 6}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問