2017-09-28 4 views
0

非常に簡単なログインページがあります。問題はLoginメソッドにあります。私はRedirectToActionを実行しますが、Webページをログインページからホームページに変更することはありません。レイザーリダイレクトに予期しない動作が含まれています

にHomeController(メインのアプリケーションコントローラ)

public ActionResult Index(string username = null, string password = null) 
    { 
     if (username == null || password == null) 
     { 
      return RedirectToAction("Index", "Auth"); 
     } 

     this.username = username; 
     this.password = password; 

     return View(); //and have tried return View("Index"); 
    } 

AuthController(ユーザ名とパスワードをつかむ)

public ActionResult Login(string username, string password) 
    {   
     return RedirectToAction("Index","Home", new { username=username,password=password}); 
    } 

ボタンを押し

function Login() { 
    var _get_searchdetails = '@Url.Action("Login", "Auth")'; 
    $.ajax({ 
    url: _get_searchdetails, 
    data: { username: $('#username').val(), password: $('#password').val() }, 
    type: "POST", 
    beforeSend: function() { 

    }, 
    error: function (xhr, textStatus, error) { 
     alert("Try again!"); 
    }, 
    success: function (htmldata, xhr, settings) { 

    } 
    }); 
} 
+1

'タイプ:、「GET」' * \ * GASP * *コントローラ上の – adiga

+0

設定フィールドは、コントローラがインスタンス化し、要求ごとに配置されているように、仕事に行くのではありません。 'username'と' password'の次のリクエストは再びnullになります。 –

+0

はい、私はそれらを保存します... セッション["username"] = login.username; ANDセッション["password"] = login.password;ありがとう、結構です! – Rob

答えて

0

それはあなたがしようとしているものを実際に明確ではありませんアクションメソッドのコードは意味をなさないので、ここで行います。

しかし、より良いオプションは、ここでは好きなことのパラメータを持つコントローラとアクション名を指定してRedirecToAction methodを使用することができます。

return RedirectToAction("Index","Home", new { username=username,password=password}); 

を、あなたがアクションにユーザー名とパスワードを渡すためGet要求を使用すべきではありませんこれは、ハッカーがWebアプリケーションに簡単にハックする可能性が非常に高いためです。

希望に役立つ!

+0

いくつかの更新を行いました。私はダウンストリームになりすますためにユーザーの資格情報を取得する簡単なログインページをしようとしています。この問題は、言及したRedirectToActionが実行されると、ログインビューに残ります。 – Rob

0

私の問題が見つかりました。私はajaxクエリの代わりにこれを行う必要がありました。

 @using (Html.BeginForm("Login", "Auth")) 
     { 
      <label for="username">Username</label> 
      <input type="text" id="username" name="username"/> 
      <br /> 
      <label for="username">Password</label> 
      <input type="password" id="password" name="password"/> 

      <input type="submit" value="Create" /> 
     } 
+0

もしあなたがajaxの振る舞いを維持したいのであれば、レスポンスにurlを返すことができ、javascriptからurlにリダイレクトされます( 'location = response.url'のようなもの)。しかし、一般に、この種のシナリオでは、ajaxを使って 'POST 'する必要はありません。 – Extragorey

+0

いいえ、私は本当にアヤックスの必要はありませんでした。私はちょうど私がそれを働かせるために探していたものを正確に知らなかった。以前はRazor 5を使ったことがありませんでした。コードを書いてそれを学び、同時にうまくいくとは限りません。 – Rob

関連する問題