2013-04-13 2 views
0

Я реализую свой собственный пароль для сброса в ASP.NET. В случае сброса пароля сначала создаю случайную строку и отправлю ее пользователю по электронной почте. Для ссылки в электронной почте, например, http://xyz.com/account/forgot?random=xxxx&userid=xx.I, было создано действие типа httpget, которое забыло, что представление возвращает представление с входными тегами для паролей, если randomid и userid проверяются. Но в httppost тип забыл, у меня путают параметры. Я забылМодель, имеющий 2 свойства пароль и confirmpassword.If я просто пройти mismodel для httppost действие, то я не могу запросить пользователя из базы данных. Я думаю, что я должен передать randomId в качестве параметра. Но я получаю, как захватить randomID с URL-адресом httpget действие (если я это сделаю, это безопасно?)? Прошу вас, я застрял .. Заранее спасибоСброс пароля в ASP.NET MVC

+0

Вы используете SimpleMembership? –

+0

Нет, я использую пользовательское членство –

+0

Пожалуйста, покажите код, на который вы застряли (действие HttpPost и забытыймодель). – jadarnel27

ответ

1

Вы используете как Html.BeginForm («action», «controller»), Если это так, вы потеряете параметры запроса. Поскольку методы HttpGet и HttpPost для ForGotPassword (..) имеют одно и то же имя действия, Вы можете просто использовать 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) 
: 
} 
+0

+1, Если вы восприимчивы к сохранению идентификатора в скрытом поле, которого вы не должны, так как он совпадает с тем, который вы передавали в строке запроса, вы также можете использовать переменную Session – Devesh

+0

@Manas, я не хочу использовать скрытое поле из-за подозрительных атак. Первый подход может быть лучше. Спасибо –

+0

Кажется довольно тривиальным, чтобы подделать данные для метода post и сбросить пароль произвольного пользователя? – Casey

Смежные вопросы