Я пытаюсь настроить метод аутентификации в один раз. У меня есть начальная форма в моем Auth/Index, где пользователь вводит свое имя пользователя и пароль. Это создает UID и передает его на другой видHttpPost в MVC AuthController
@model Hsbc.Marketing_Awards.Website.Models.AuthModel
<h2>EnterAuthenticationLink</h2>
@using(Html.BeginForm("AuthorizeOneTimeLink", "Auth", FormMethod.Post))
{
@Html.LabelFor(m => m.EmailAddress, "Enter one time link")
@Html.TextBoxFor(m => m.AuthenticationUrl, new { Name = "authenticationUrl" })
<input type="submit" value="Submit"/>
}
Я хочу, чтобы представить эту форму, но сохранить перенаправляют на мой взгляд Auth/Index. Я предполагаю, что это связано с тем, что мне нужно авторизовать представление в моем web.config, но я попытался это сделать, и он, похоже, не работает.
<system.web>
<httpCookies httpOnlyCookies="true"/>
<authentication mode="Forms">
<forms loginUrl="Auth" timeout="30" slidingExpiration="true" defaultUrl="Home/Index"/>
</authentication>
</system.web>
<location path="Views/Auth/EnterAuthenticationLink.cshtml">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Views/Auth">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
И Mothod Я пытаюсь получить доступ в
[HttpPost]
public ActionResult AuthorizeOneTimeLink(string authenticationUrl)
{
// Authorise link
}
Если изменить «AuthorizeOneTimeLink» имя действия для индекса (так что есть 2 Индексные действия на контроллере), измените FormMethod в FormMethod.Get (и измените атрибут в моем новом действии индекса на [HttpGet]), тогда это будет работать, но не пройдет тестирование на проникновение.
Вы не авторизованы. Ваше разрешение основано на действии контроллера. попробуйте использовать атрибут 'allowanonymous' вместо –
Я пробовал это. Проблема была не в разрешении (действие было в AuthController, который уже разрешен). Проблема была в том, что это был HttpGet, поскольку это был OneTimeLink. Виноват. Спасибо за помощь. –