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