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.

Другие вопросы по тегам