質問編集履歴

1

自分で調査したことを追加しました。

2019/01/10 06:47

投稿

blackdifferent
blackdifferent

スコア25

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,13 @@
10
10
 
11
11
 
12
12
 
13
- 一応ログイン機能のころだけコード載せておきます
13
+ <調査したことを追記します
14
+
15
+ AcountViewModels.csのLoginViewModelのEmailをEmp_numに変更し、AccountController.csのLogin(post)でDBにアクセスし、入力した従業員番号とパスワードと一致するものがあるかを調べる処理を追加しました。これにより一応ログインの処理は実装出来ましたが、前までユーザ名が表示されていたところに何も表示されなくなってしまいました。おそらくawait SignInManager.PasswordSignInAsyncの処理を省いたせいで、userIdentityに何も入らなくなってしまったと思うのですが、このへんをうまく実装する方法がわかりません。
16
+
17
+
18
+
19
+ 以下に自分が追加した箇所のコードを載せます。
14
20
 
15
21
 
16
22
 
@@ -22,89 +28,7 @@
22
28
 
23
29
  {
24
30
 
25
- public class ExternalLoginConfirmationViewModel
26
-
27
- {
31
+ ・・・
28
-
29
- [Required]
30
-
31
- [Display(Name = "電子メール")]
32
-
33
- public string Email { get; set; }
34
-
35
- }
36
-
37
-
38
-
39
- public class ExternalLoginListViewModel
40
-
41
- {
42
-
43
- public string ReturnUrl { get; set; }
44
-
45
- }
46
-
47
-
48
-
49
- public class SendCodeViewModel
50
-
51
- {
52
-
53
- public string SelectedProvider { get; set; }
54
-
55
- public ICollection<System.Web.Mvc.SelectListItem> Providers { get; set; }
56
-
57
- public string ReturnUrl { get; set; }
58
-
59
- public bool RememberMe { get; set; }
60
-
61
- }
62
-
63
-
64
-
65
- public class VerifyCodeViewModel
66
-
67
- {
68
-
69
- [Required]
70
-
71
- public string Provider { get; set; }
72
-
73
-
74
-
75
- [Required]
76
-
77
- [Display(Name = "コード")]
78
-
79
- public string Code { get; set; }
80
-
81
- public string ReturnUrl { get; set; }
82
-
83
-
84
-
85
- [Display(Name = "認証情報をこのブラウザーに保存しますか?")]
86
-
87
- public bool RememberBrowser { get; set; }
88
-
89
-
90
-
91
- public bool RememberMe { get; set; }
92
-
93
- }
94
-
95
-
96
-
97
- public class ForgotViewModel
98
-
99
- {
100
-
101
- [Required]
102
-
103
- [Display(Name = "電子メール")]
104
-
105
- public string Email { get; set; }
106
-
107
- }
108
32
 
109
33
 
110
34
 
@@ -138,213 +62,25 @@
138
62
 
139
63
 
140
64
 
141
- public class RegisterViewModel
142
-
143
- {
65
+ ・・・
144
-
145
- [Required]
146
-
147
- [EmailAddress]
148
-
149
- [Display(Name = "電子メール")]
150
-
151
- public string Email { get; set; }
152
-
153
-
154
-
155
- [Required]
156
-
157
- [StringLength(100, ErrorMessage = "{0} の長さは {2} 文字以上である必要があります。", MinimumLength = 6)]
158
-
159
- [DataType(DataType.Password)]
160
-
161
- [Display(Name = "パスワード")]
162
-
163
- public string Password { get; set; }
164
-
165
-
166
-
167
- [DataType(DataType.Password)]
168
-
169
- [Display(Name = "パスワードの確認入力")]
170
-
171
- [Compare("Password", ErrorMessage = "パスワードと確認のパスワードが一致しません。")]
172
-
173
- public string ConfirmPassword { get; set; }
174
-
175
- }
176
-
177
-
178
-
179
- public class ResetPasswordViewModel
180
-
181
- {
182
-
183
- [Required]
184
-
185
- [EmailAddress]
186
-
187
- [Display(Name = "電子メール")]
188
-
189
- public string Email { get; set; }
190
-
191
-
192
-
193
- [Required]
194
-
195
- [StringLength(100, ErrorMessage = "{0} の長さは {2} 文字以上である必要があります。", MinimumLength = 6)]
196
-
197
- [DataType(DataType.Password)]
198
-
199
- [Display(Name = "パスワード")]
200
-
201
- public string Password { get; set; }
202
-
203
-
204
-
205
- [DataType(DataType.Password)]
206
-
207
- [Display(Name = "パスワードの確認入力")]
208
-
209
- [Compare("Password", ErrorMessage = "パスワードと確認のパスワードが一致しません。")]
210
-
211
- public string ConfirmPassword { get; set; }
212
-
213
-
214
-
215
- public string Code { get; set; }
216
-
217
- }
218
-
219
-
220
-
221
- public class ForgotPasswordViewModel
222
-
223
- {
224
-
225
- [Required]
226
-
227
- [EmailAddress]
228
-
229
- [Display(Name = "電子メール")]
230
-
231
- public string Email { get; set; }
232
-
233
- }
234
66
 
235
67
  }
236
68
 
69
+ ```
237
70
 
238
71
 
239
- ```
240
72
 
241
73
  コントローラ:
242
74
 
243
75
  ```
244
76
 
77
+
78
+
245
79
  namespace WebApplication8.Controllers
246
80
 
247
- {
81
+ {
248
82
 
249
- [Authorize]
250
-
251
- public class AccountController : Controller
252
-
253
- {
254
-
255
- private ApplicationSignInManager _signInManager;
256
-
257
- private ApplicationUserManager _userManager;
258
-
259
- private mvcdbEntities db = new mvcdbEntities();
260
-
261
-
262
-
263
- public AccountController()
264
-
265
- {
266
-
267
- }
268
-
269
-
270
-
271
- public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager )
272
-
273
- {
274
-
275
- UserManager = userManager;
276
-
277
- SignInManager = signInManager;
278
-
279
- }
280
-
281
-
282
-
283
- public ApplicationSignInManager SignInManager
284
-
285
- {
286
-
287
- get
83
+     ・・・
288
-
289
- {
290
-
291
- return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
292
-
293
- }
294
-
295
- private set
296
-
297
- {
298
-
299
- _signInManager = value;
300
-
301
- }
302
-
303
- }
304
-
305
-
306
-
307
- public ApplicationUserManager UserManager
308
-
309
- {
310
-
311
- get
312
-
313
- {
314
-
315
- return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
316
-
317
- }
318
-
319
- private set
320
-
321
- {
322
-
323
- _userManager = value;
324
-
325
- }
326
-
327
- }
328
-
329
-
330
-
331
- //
332
-
333
- // GET: /Account/Login
334
-
335
- [AllowAnonymous]
336
-
337
- public ActionResult Login(string returnUrl)
338
-
339
- {
340
-
341
- ViewBag.ReturnUrl = returnUrl;
342
-
343
- return View();
344
-
345
- }
346
-
347
-
348
84
 
349
85
  //
350
86
 
@@ -374,23 +110,23 @@
374
110
 
375
111
  // パスワード入力失敗回数に基づいてアカウントがロックアウトされるように設定するには、shouldLockout: true に変更してください。
376
112
 
377
- var result = await SignInManager.PasswordSignInAsync(model.Emp_num, model.Password, model.RememberMe, shouldLockout: false);
113
+ //var result = await SignInManager.PasswordSignInAsync(model.Emp_num, model.Password, model.RememberMe, shouldLockout: false);
378
114
 
379
- //var result = SignInStatus.Success;
115
+ var result = SignInStatus.Success;
380
116
 
381
- //var PersonalInfos = from a in db.TPersonalInfo
117
+ var PersonalInfos = from a in db.TPersonalInfo
382
118
 
383
- // where a.emp_num == model.Emp_num && a.password == model.Password
119
+ where a.emp_num == model.Emp_num && a.password == model.Password
384
120
 
385
- // select a;
121
+ select a;
386
122
 
387
- //if (PersonalInfos.Count() == 0)
123
+ if (PersonalInfos.Count() == 0)
388
124
 
389
- //{
125
+ {
390
126
 
391
- // result = SignInStatus.Failure;
127
+ result = SignInStatus.Failure;
392
128
 
393
- //}
129
+ }
394
130
 
395
131
 
396
132
 
@@ -424,92 +160,6 @@
424
160
 
425
161
 
426
162
 
427
- //
428
-
429
- // GET: /Account/VerifyCode
430
-
431
- [AllowAnonymous]
432
-
433
- public async Task<ActionResult> VerifyCode(string provider, string returnUrl, bool rememberMe)
434
-
435
- {
436
-
437
- // ユーザーがユーザー名/パスワードまたは外部ログイン経由でログイン済みであることが必要です。
438
-
439
- if (!await SignInManager.HasBeenVerifiedAsync())
440
-
441
- {
442
-
443
- return View("Error");
444
-
445
- }
446
-
447
- return View(new VerifyCodeViewModel { Provider = provider, ReturnUrl = returnUrl, RememberMe = rememberMe });
448
-
449
- }
450
-
451
-
452
-
453
- //
454
-
455
- // POST: /Account/VerifyCode
456
-
457
- [HttpPost]
458
-
459
- [AllowAnonymous]
460
-
461
- [ValidateAntiForgeryToken]
462
-
463
- public async Task<ActionResult> VerifyCode(VerifyCodeViewModel model)
464
-
465
- {
466
-
467
- if (!ModelState.IsValid)
468
-
469
- {
470
-
471
- return View(model);
472
-
473
- }
474
-
475
-
476
-
477
- // 次のコードは、2 要素コードに対するブルート フォース攻撃を防ぎます。
478
-
479
- // ユーザーが誤ったコードを入力した回数が指定の回数に達すると、ユーザー アカウントは
480
-
481
- // 指定の時間が経過するまでロックアウトされます。
482
-
483
- // アカウント ロックアウトの設定は IdentityConfig の中で構成できます。
484
-
485
- var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent: model.RememberMe, rememberBrowser: model.RememberBrowser);
486
-
487
- switch (result)
488
-
489
- {
490
-
491
- case SignInStatus.Success:
492
-
493
- return RedirectToLocal(model.ReturnUrl);
494
-
495
- case SignInStatus.LockedOut:
496
-
497
- return View("Lockout");
498
-
499
- case SignInStatus.Failure:
500
-
501
- default:
502
-
503
- ModelState.AddModelError("", "無効なコード。");
504
-
505
- return View(model);
506
-
507
- }
508
-
509
- }
510
-
511
-
512
-
513
163
  ・・・
514
164
 
515
165
  }