MVC 4 Использование авторизации с пользовательским кодом не работает
Новое в MVC 4. Я не хочу использовать встроенное управление учетными записями, которое поставляется с MVC 4. Однако я создал папку Account в Views, AccountModel и AccountController.
То, что я хотел бы сделать, это ограничить доступ к представлениям в папке учетной записи. Для этого в AccountController я использую следующее:
[Authorize]
public class AccountController : Controller
{
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
public ActionResult bob()
{
return View();
}...
На моей домашней странице у меня есть ссылка на представление bob в представлении Accounts, которое теперь перенаправляет меня на страницу входа (что правильно).
Теперь, после отправки формы, с правильными учетными данными (что-нибудь идет) я смогу увидеть Боба, но вместо этого я перенаправлен обратно в Логин, потому что я не был авторизован. Код:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
return RedirectToLocal(returnUrl);
}...
Я не хочу использовать встроенное соединение с БД, а что мне нужно, чтобы проверить имя пользователя по строке и затем оставить authorization = true, чтобы я мог просматривать bob?
В долгосрочной перспективе я планирую подключиться к БД и получить информацию обратно с помощью SPROC, поэтому сейчас я просто хочу, чтобы пользователь проходил аутентификацию на основе проверяемой строки.
1 ответ
Вы будете перенаправлены до тех пор, пока ASP.net не увидит cookie с проверкой подлинности с помощью форм.
FormsAuthentication.SetAuthCookie(theUsersNameasString, boolForSessionOrPersistentCookie);
Предполагая, что ваш Web.Config настроен для проверки подлинности с помощью форм
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
ASP.Net будет искать файл cookie.ASPXAUTH, если только имя этого файла cookie не было изменено в WEB.CONFIG.