2016-08-10 14 views
0

Individual User Accounts認証を使用してASP.NETコアWebプロジェクトを作成すると、VS2015が多くのアクションメソッドを使用してAccountControllerを作成します。これらのアクションメソッドの大部分は、入力オプションパラメータstring returnUrl = nullを含んでおり、これらのメソッドの中にはViewData["ReturnUrl"] = returnUrl;があります(下記の例を参照)。コントローラのアクションメソッドでViewData ["ReturnUrl"] = returnUrlを使用する方法

質問

  1. このオプションの入力パラメータおよびこれらのアクションメソッド内の文のViewData["ReturnUrl"] = returnUrl;の使用は何ですか? 2.アクションメソッドでこれらを使用する必要があるときはいつ使用しますか?

方法取得:

[HttpGet] 
[AllowAnonymous] 
public IActionResult Login(string returnUrl = null) 
{ 
    ViewData["ReturnUrl"] = returnUrl; 
    return View(); 
} 

ポストメソッドを:

ページにユーザーを戻したいとき、あなたはあなたのビューに戻りURLを渡す必要があり
[HttpPost] 
     [AllowAnonymous] 
     [ValidateAntiForgeryToken] 
     public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) 
     { 
      ViewData["ReturnUrl"] = returnUrl; 
      if (ModelState.IsValid) 
      { 
       // This doesn't count login failures towards account lockout 
       // To enable password failures to trigger account lockout, set lockoutOnFailure: true 
       var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false); 
       if (result.Succeeded) 
       { 
        _logger.LogInformation(1, "User logged in."); 
        return RedirectToLocal(returnUrl); 
       } 
       if (result.RequiresTwoFactor) 
       { 
        return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 
       } 
       if (result.IsLockedOut) 
       { 
        _logger.LogWarning(2, "User account locked out."); 
        return View("Lockout"); 
       } 
       else 
       { 
        ModelState.AddModelError(string.Empty, "Invalid login attempt."); 
        return View(model); 
       } 
      } 

      // If we got this far, something failed, redisplay form 
      return View(model); 
     } 

答えて

3

彼はもともと、ログインするようになる前に、行きたいと思っていました。

これは、ViewDataを使用するか、モデルの通常のプロパティとして使用できます。

あなたはどこから来たのかを「忘れたくない」という理由だけで、リターンを周りに渡します。

+0

のために取り外さHTMLの//残りの部分は、あなたの知識を共有していただきありがとうございます。 – nam

2

認証が必要なWebサイトにアクセスすると、認証後に元のページに戻る必要があります。これにより、ユーザーが元のページ(ホームページなどのデフォルトページではなく)にリダイレクトされるように、その戻りURLが保存されます。ログイン後にユーザーがデフォルトのページに移動するようにしたい場合は、これを削除できます。あなたは、デフォルトのページリダイレクトを配置する必要があります。あなたはこの

<form asp-controller="Account" asp-action="Login" asp-route-returnurl="@viewdata["ReturnUrl"]" method="post" class="form-horizontal"> 

のようなビュー上にreturnurlを解析することができます

関連する問題