質問編集履歴

3

内容変更

2018/08/02 00:09

投稿

Nitta
Nitta

スコア96

test CHANGED
File without changes
test CHANGED
@@ -148,13 +148,17 @@
148
148
 
149
149
  ]);
150
150
 
151
+  //新規登録
152
+
151
153
  Route::post('/signup',[
152
154
 
153
155
  'uses' => 'UserController@postSignup',
154
156
 
155
157
  'as' => 'user.signup'
156
158
 
157
- ]);
159
+ ]);
160
+
161
+  //ログイン
158
162
 
159
163
  Route::get('/signin',[
160
164
 
@@ -162,7 +166,9 @@
162
166
 
163
167
  'as' => 'user.signin'
164
168
 
165
- ]);
169
+ ]);
170
+
171
+
166
172
 
167
173
  Route::post('/signin',[
168
174
 

2

内容変更

2018/08/02 00:09

投稿

Nitta
Nitta

スコア96

test CHANGED
File without changes
test CHANGED
@@ -4,20 +4,26 @@
4
4
 
5
5
  その後ログイン済みならリダイレクトできるようにしたいの
6
6
 
7
- ですが、リダイレクト時にLaravelで用意されているログイン
7
+ ですが、リダイレクトできずプロフィール画面(user/profile)
8
-
8
+
9
- 画面にリダイレクトされます。
9
+ が、そのまま表示されます。
10
-
10
+
11
- 自作のログイン画面にリダイレクトできるようにするには、
11
+ ログイン画面にリダイレクトできるようにするには、
12
12
 
13
13
  Authenticate.php内のコードをどのようにすれば良いか、
14
14
 
15
15
  お教え下さい。
16
16
 
17
+
18
+
17
19
  <やりたいこと>
18
20
 
19
21
  プロフィール画面(user/profile)にアクセスする⇒ログインページ(user/signin)にリダイレクト
20
22
 
23
+ <参考サイト>
24
+
25
+ http://laraweb.net/tutorial/1901/
26
+
21
27
 
22
28
 
23
29
  vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php
@@ -102,20 +108,104 @@
102
108
 
103
109
   if (Auth::guard($guard)->guest()) {
104
110
 
105
-  if ($request->ajax() || $request->wantsJson()) {
111
+   if ($request->ajax() || $request->wantsJson()) {
106
-
112
+
107
-  return response('Unauthorized.', 401);
113
+     return response('Unauthorized.', 401);
114
+
108
-
115
+   }
116
+
109
- } else {
117
+    else {
110
-
118
+
111
-  return redirect()->route('user.signin'); // ←修正
119
+     return redirect()->route('user.signin'); // ←修正
112
-
120
+
113
- }
121
+   }
114
-
122
+
115
- }
123
+  }
116
124
 
117
125
   return $next($request);
118
126
 
119
127
  }
120
128
 
121
129
  ```
130
+
131
+ web.php(ルーチング)
132
+
133
+ ```
134
+
135
+ Route::group(['prefix' => 'user'], function() {
136
+
137
+
138
+
139
+ Route::group(['middleware' => 'guest'], function(){
140
+
141
+ //登録
142
+
143
+ Route::get('/signup',[
144
+
145
+ 'uses' => 'UserController@getSignup',
146
+
147
+ 'as' => 'user.signup'
148
+
149
+ ]);
150
+
151
+ Route::post('/signup',[
152
+
153
+ 'uses' => 'UserController@postSignup',
154
+
155
+ 'as' => 'user.signup'
156
+
157
+ ]);
158
+
159
+ Route::get('/signin',[
160
+
161
+ 'uses' => 'UserController@getSignin',
162
+
163
+ 'as' => 'user.signin'
164
+
165
+ ]);
166
+
167
+ Route::post('/signin',[
168
+
169
+ 'uses' => 'UserController@postSignin',
170
+
171
+ 'as' => 'user.signin'
172
+
173
+ ]);
174
+
175
+
176
+
177
+ });
178
+
179
+
180
+
181
+  Route::group(['middleware' => 'auth'], function(){
182
+
183
+ //ユーザープロファイル
184
+
185
+ Route::get('/profile',[
186
+
187
+ 'uses' => 'UserController@getProfile',
188
+
189
+ 'as' => 'user.profile'
190
+
191
+ ]);
192
+
193
+ // ログアウト
194
+
195
+ Route::get('/logout',[
196
+
197
+ 'uses' => 'UserController@getLogout',
198
+
199
+ 'as' => 'user.logout'
200
+
201
+ ]);
202
+
203
+
204
+
205
+ });
206
+
207
+
208
+
209
+ });
210
+
211
+ ```

1

内容変更

2018/08/02 00:06

投稿

Nitta
Nitta

スコア96

test CHANGED
@@ -1 +1 @@
1
- Authenticate.phpが見当たらない
1
+ ログイン画面へのリダイレクト
test CHANGED
@@ -1,31 +1,121 @@
1
1
  お世話になってます。
2
2
 
3
- 実は今、認証画面の作成において認証・ログアウト処理が
3
+ 今、認証画面の作成においてまずページ保護をかけ
4
4
 
5
- できるようにしたいと考え、Authenticate.phpファイルを
5
+ その後ログイン済みならリダイレクトできるようにしたいの
6
6
 
7
- 編集したいのですが、app/Http/Middlewareフォルダ内に
7
+ ですが、リダイレクト時にLaravelで用意されているログイン
8
8
 
9
- 上記のファイルが見当たりせん
9
+ 画面にリダイレクトされ
10
+
11
+ 自作のログイン画面にリダイレクトできるようにするには、
12
+
13
+ Authenticate.php内のコードをどのようにすれば良いか、
14
+
15
+ お教え下さい。
16
+
17
+ <やりたいこと>
18
+
19
+ プロフィール画面(user/profile)にアクセスする⇒ログインページ(user/signin)にリダイレクト
10
20
 
11
21
 
12
22
 
13
- 因みに、とあるサイトでは下記のフォルダにあるとありましたが、
23
+ vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php
14
24
 
25
+ ```
26
+
27
+ <?php
28
+
29
+ namespace Illuminate\Auth\Middleware;
30
+
15
- 下記リンクがそれにあたるのでしょうか?
31
+ use Closure;
32
+
33
+ use Illuminate\Auth\AuthenticationException;
34
+
35
+ use Illuminate\Contracts\Auth\Factory as Auth;
16
36
 
17
37
 
18
38
 
39
+ class Authenticate
40
+
41
+ {
42
+
43
+ protected $auth;
44
+
19
- 1⇒vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php
45
+ public function __construct(Auth $auth)
46
+
47
+ {
48
+
49
+ $this->auth = $auth;
50
+
51
+ }
20
52
 
21
53
 
22
54
 
23
- <聞きたいこと>
55
+ public function handle($request, Closure $next, ...$guards)
24
56
 
25
- 1のリンク先がAuthenticate.phpにあたる?
57
+ {
26
58
 
27
- こちらに自分が編集したい内容を記載して大丈夫?
59
+ $this->authenticate($guards);
28
60
 
61
+ return $next($request);
29
62
 
63
+ }
30
64
 
65
+
66
+
67
+ protected function authenticate(array $guards)
68
+
69
+ {
70
+
71
+ if (empty($guards)) {
72
+
73
+ return $this->auth->authenticate();
74
+
75
+ }
76
+
77
+ foreach ($guards as $guard) {
78
+
79
+ if ($this->auth->guard($guard)->check()) {
80
+
81
+ return redirect()->route('user.signin'); // ←修正
82
+
83
+ }
84
+
85
+ }
86
+
87
+ throw new AuthenticationException('Unauthenticated.', $guards);
88
+
89
+ }
90
+
91
+ }
92
+
93
+ ```
94
+
31
- 、ご教示お願いしま
95
+ 記コードを下記と同じ働きにるには?
96
+
97
+ ```
98
+
99
+ public function handle($request, Closure $next, $guard = null)
100
+
101
+ {
102
+
103
+  if (Auth::guard($guard)->guest()) {
104
+
105
+  if ($request->ajax() || $request->wantsJson()) {
106
+
107
+  return response('Unauthorized.', 401);
108
+
109
+ } else {
110
+
111
+  return redirect()->route('user.signin'); // ←修正
112
+
113
+ }
114
+
115
+ }
116
+
117
+  return $next($request);
118
+
119
+ }
120
+
121
+ ```