質問編集履歴

1

質問自体の編集

2019/10/09 03:09

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,72 +1,52 @@
1
1
  ##現状
2
2
 
3
- Ruby on railsでDeviseを用いてsign in機能を作成しました。
3
+ Ruby on railsでDeviseを用いてlog in機能を作成しました。
4
4
 
5
5
  そこで、以下の問題に当たってしまいました。
6
6
 
7
7
 
8
8
 
9
- 一度登録したメールアドレスとパスワードを用いて、アプリの挙動を確かめるためにsign upをしようとしたところ、以下のように、どちらかに不備があるということで、sign upが弾かれてしまいました。
9
+ 一度登録したメールアドレスとパスワードを用いて、アプリの挙動を確かめるためにlog inをしようとしたところ、以下のように、どちらかに不備があるということで、log inが弾かれてしまいました。
10
10
 
11
- ![イメージ説明](8606a6d6bd683bc2b6e932d4a2115b3d.png)
11
+ ![イメージ説明](820e6507e9fd871b024ed232d79cc634.png)
12
12
 
13
13
 
14
14
 
15
+
16
+
17
+
18
+
19
+
20
+
15
- パラメータのデータ型
21
+ ##ログ
16
22
 
17
23
  ```terminal
18
24
 
19
25
  Processing by Users::SessionsController#new as HTML
20
26
 
21
- Parameters: {"utf8"=>"✓", "authenticity_token"=>"yUc1GqCZS0mcgAeVejcd2+noahDM6ZzfqrljEeGNFKlZehzvl37iCgu5LEYRHZbViUYE9cqPP2IBLpyXaOxybw==", "user"=>{"email"=>"at@et.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
22
-
23
- Unpermitted parameter: :email
27
+ Parameters: {"utf8"=>"✓", "authenticity_token"=>"CQ4yIlUCMKWNWAdXODQkwBm0iRf69rJAfOYlkAsrdfaCAAo/E51adYtczw09B+/TbGwAUEDi4MfhygJ5IWvC5w==", "user"=>{"email"=>"hogehoge@fugafuga.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
24
28
 
25
29
  Rendering devise/sessions/new.html.erb within layouts/application
26
30
 
27
- Rendered devise/sessions/new.html.erb within layouts/application (3.1ms)
31
+ Rendered devise/sessions/new.html.erb within layouts/application (4.2ms)
28
32
 
29
- Completed 200 OK in 203ms (Views: 65.7ms | ActiveRecord: 0.0ms)
30
-
31
- ```
32
-
33
- sign in画面で入力させているemailとpasswordがuserの入れ子になっていることを確認できる。
34
-
35
-
36
-
37
-
38
-
39
- ##原因
40
-
41
- ```terminal
42
-
43
- Processing by Users::SessionsController#new as HTML
44
-
45
- Parameters: {"utf8"=>"✓", "authenticity_token"=>"76rw5RhQ6PkwY0iyWz5HcD4kde2SPzmq4MLVjejpQzvgJAYJn7mGKX8/3XksiNHTTY8onf3+urH/DEyabbQv/w==", "user"=>{"email"=>"at@et.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
46
-
47
-
48
-
49
- Unpermitted parameter: :email←ここの部分でemailがunpermittedな状態であることが原因、つまり、コントローラでサニタイザーから、emailをpermitしてやればいい。
50
-
51
-
52
-
53
- Rendering devise/sessions/new.html.erb within layouts/application
54
-
55
- Rendered devise/sessions/new.html.erb within layouts/application (2.2ms)
56
-
57
- Completed 200 OK in 213ms (Views: 69.6ms | ActiveRecord: 0.0ms)
33
+ Completed 200 OK in 238ms (Views: 79.7ms | ActiveRecord: 0.0ms)
58
34
 
59
35
  ```
60
36
 
61
37
 
62
38
 
63
- ##原因にある問題点解決策
39
+ ##sessions_controller内のスクリプト
64
40
 
65
41
  ```Rails5
66
42
 
43
+ # frozen_string_literal: true
44
+
45
+
46
+
67
47
  class Users::SessionsController < Devise::SessionsController
68
48
 
69
- before_action :configure_sign_in_params, only: [:create]
49
+ before_action :configure_permitted_parameters, only: [:new, :create, :destroy]
70
50
 
71
51
 
72
52
 
@@ -106,131 +86,13 @@
106
86
 
107
87
  # If you have extra params to permit, append them to the sanitizer.
108
88
 
109
- def configure_sign_in_params
89
+ def configure_permitted_parameters
110
90
 
111
- devise_parameter_sanitizer.permit(:sign_in, keys: [user: [:email, :password]])
91
+ devise_parameter_sanitizer.permit(:sign_in) do |user_params|
112
92
 
113
- # devise_parameter_sanitizer.permit(:account_update, keys: [:attribute])
93
+ user_params.permit(:email, :password, :remember_me)
114
-
115
- end
116
-
117
- end
118
-
119
- ```
120
-
121
- サニタイザーの部分で、emailとpasswordがuserの入れ子になっていることが判明したので、Devise4の書き方にしたがって、上記のように訂正。
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
- ###別の方法
130
-
131
- 参照したサイト(https://teratail.com/questions/136856)
132
-
133
- ```Rails5
134
-
135
- class ApplicationController < ActionController::Base
136
-
137
- protect_from_forgery with: :exception
138
-
139
- before_action :configure_permitted_parameters, if: :devise_controller?
140
-
141
- before_action :configure_sign_in_params
142
-
143
- # before_action :authenticate_user!
144
-
145
-
146
-
147
- def after_sign_in_path_for(resource)
148
-
149
- blogs_path
150
-
151
- end
152
-
153
-
154
-
155
- def after_sign_out_path_for(resource)
156
-
157
- root_path
158
-
159
- end
160
-
161
-
162
-
163
- protected
164
-
165
- def configure_permitted_parameters
166
-
167
- devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email, :imege, :introduce, :password])
168
94
 
169
95
  end
170
-
171
-
172
-
173
- def configure_sign_in_params
174
-
175
- devise_parameter_sanitizer.permit(:sign_in, keys: [:user => [:email, :password]])
176
-
177
- end
178
-
179
- end
180
-
181
- ```
182
-
183
-
184
-
185
- ```Rails5
186
-
187
- class Users::SessionsController < Devise::SessionsController
188
-
189
- before_action :configure_sign_in_params, only: [:new, :create, :destroy]
190
-
191
-
192
-
193
- # GET /resource/sign_in
194
-
195
- def new
196
-
197
- super
198
-
199
- end
200
-
201
-
202
-
203
- # POST /resource/sign_in
204
-
205
- def create
206
-
207
- super
208
-
209
- end
210
-
211
-
212
-
213
- # DELETE /resource/sign_out
214
-
215
- def destroy
216
-
217
- super
218
-
219
- end
220
-
221
-
222
-
223
- protected
224
-
225
-
226
-
227
- # If you have extra params to permit, append them to the sanitizer.
228
-
229
- def configure_sign_in_params
230
-
231
- devise_parameter_sanitizer.permit(:sign_in, keys: [user: [:email, :password]])
232
-
233
- # devise_parameter_sanitizer.permit(:account_update, keys: [:attribute])
234
96
 
235
97
  end
236
98
 
@@ -240,34 +102,8 @@
240
102
 
241
103
 
242
104
 
243
- 実行結果のログ
105
+ ##聞きたいこと
244
106
 
245
- ```terminal
107
+ terminalでもエラーらしきログがでていないので、どこでこの不具合が発生しているのか見当がつかなかったので、教えていただきたいです。
246
108
 
247
- Processing by Users::SessionsController#new as HTML
248
-
249
- Parameters: {"utf8"=>"✓", "authenticity_token"=>"yUc1GqCZS0mcgAeVejcd2+noahDM6ZzfqrljEeGNFKlZehzvl37iCgu5LEYRHZbViUYE9cqPP2IBLpyXaOxybw==", "user"=>{"email"=>"at@et.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
250
-
251
- Unpermitted parameter: :email
252
-
253
- Rendering devise/sessions/new.html.erb within layouts/application
254
-
255
- Rendered devise/sessions/new.html.erb within layouts/application (3.1ms)
256
-
257
- Completed 200 OK in 203ms (Views: 65.7ms | ActiveRecord: 0.0ms)
258
-
259
- ```
260
-
261
- 結果は変わらず。。。
262
-
263
-
264
-
265
-
266
-
267
- そもそも根本からDeviseについて理解してない気がしてきました。
268
-
269
- applicationcontrollerで設置しているbefore actionとSessionscontrollerで設置しているシンセサイザーにどういう違いがあるのかを知りたいです。
270
-
271
- 御指南いただけると幸いです。よろしくお願いします。
272
-
273
- https://github.com/HIROKI-HORIGUCHI/blog
109
+ 私はsessions_controllerに原因があると考えましたが、違っていたみたいなので、、、