В моем .NET MVC 4 я добавляю глобальный фильтр для защиты своих контроллеров. Это делается с помощью:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
}
который вызывается из моего класса Global.cs.
Мой файл Web.config содержит стандартную конфигурацию:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
Действие My Login украшено [AllowAnonymous]
, чтобы анонимные пользователи могли войти в систему.
Пока все хорошо, все отлично работает. Вот мое действие для входа:
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
Теперь я хотел добавить страницу reset -password, которая также точно так же, как страница входа должна быть доступна анонимным пользователям. Я создал действие (под тем же контроллером действия входа) и украсил его украшением [AllowAnonymous]
:
[AllowAnonymous]
public ActionResult ResetPasswordForUser(string message = "")
{
ViewBag.message = message;
return View();
}
Затем создайте соответствующее представление.
Я добавил эту ссылку на мою страницу входа:
@Html.ActionLink("Forgot your password?", "ResetPasswordForUser", "Account")
Во время выполнения, когда я нажимаю эту ссылку с помощью анонимного пользователя, я получаю действие ResetPasswordForUser, но при возврате представления активируется действие Login, и я никогда не могу получить желаемое представление. По какой-то причине мой запрос перехватывается, хотя я использую украшение [AllowAnonymous].
Я что-то пропустил?
Заранее спасибо
Update1:
Как сообщает Дарин Димитров, добавьте мой взгляд ResetPasswordForUser:
@using TBS.Models
@model TBS.ViewModels.ResetPasswordForUserViewModel
@{
ViewBag.Title = "Reset Password";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<table class="edit-table rounded bordered" style="width: 400px">
<tr>
<td class="label-td">
@Html.LabelFor(m => m.Username)
</td>
<td>
@Html.TextBoxFor(m => m.Username)
@Html.ValidationMessageFor(model => model.Username)
</td>
</tr>
<tr>
<td class="label-td">
@Html.LabelFor(m => m.Password)
</td>
<td>
@Html.Password("Password")
@Html.ValidationMessageFor(model => model.Password)
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center">
<input type="submit" value="Reset" />
</td>
</tr>
</table>
}