0

ASP.NET で独自のリセット パスワードを実装しています。パスワードのリセットでは、最初にランダムな文字列を作成し、それをユーザーの電子メールに送信します。電子メールのリンクについては、http://xyz.com/account/forgot?random=xxxx&userid=xx のようにします。 randomid と userid が検証された場合、パスワードの入力タグを含むビューを返します。しかし、忘れられた httppost タイプでは、パラメーターについて混乱しています。私は2つのプロパティpasswordとconfirmpasswordを持つforgetModelを持っています.forgetmodelをhttppostアクションに渡すだけでは、データベースからユーザーを照会できません.randomIdをパラメーターとして渡す必要があると思います.しかし、httpgetアクションのURLからrandomIDを取得する方法を取得しています(そうしたら安全ですか?)?私を案内してください、私は立ち往生しました..事前に感謝します

4

1 に答える 1

1

Html.BeginForm("action","controller") のように使用していますか? その場合、クエリ文字列パラメーターが失われます。ForGotPassword(..) の HttpGet メソッドと HttpPost メソッドはアクション名が同じなので、そのままHtml.BeginForm() を使用できます。したがって、フォームはページの URL にデータを送信し、クエリ文字列を取得します。

http post メソッドでは、次のように定義できます。

    [HttpPost]
    public ActionResult ForGot(ForgotModel model, string random,strung userid)
    {
     :
     :
    }
  • 上記のアプローチに従わない場合は、httpget メソッドで ViewBag/ViewData に書き込み、それらを隠しフィールドとしてビューに配置します。次に、メソッドへの入力としてそれらを受け取ることができます。

    [HttpGet]
    public ActionResult ForGot(string random,strung userid)
    {
     ViewBag.Random =random;
     Viewbag.Userid =userid;
     :
     :
    } 
    [HttpPost]
    public ActionResult ForGot(ForgotModel model, string random,strung userid)
    {
     :
     :
    }
    

と、ビューで

@Html.BeginForm("ForGot","Account"){
:
 @Html.Hidden(ViewBag.Random)
 @Html.Hidden(ViewBag.Userid)
:
}
于 2013-04-13T17:39:48.483 に答える