2015-10-29 3 views
-2

Iam, использующий авторизацию для блокировки контроллера после входа пользователя. Пользователи сохраняются в EF без использования ролей или чего-то в этом роде. Я прочитал документацию авторизации, и мне кажется, что я должен указать пользователей или роли, которые могут иметь доступ к заблокированному контроллеру;Ошибка HTML 401 неавторизованная при использовании атрибута Authorize в .NET.

Здесь у меня есть контроллер учетной записи;

[Authorize] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

Когда пользователь входит в систему, пользователь должен быть перенаправлен к этому действию, который заперт с атрибутом [Authorize], но, к сожалению, я получаю эту ошибку «Html ошибка 401 несанкционированным». Мой вопрос: как предоставить доступ ко всем пользователям, зарегистрированным в БД EF, чтобы перенаправить на следующую страницу и пропустить эту ошибку?

+0

Ваш вопрос не имеет смысла. Если они вошли в систему, атрибут 'Authorize' не будет их отклонять. –

+0

Вам не нужно указывать роли. Если вы используете только атрибут Authorize, он блокирует всех, кто не аутентифицирован. –

+0

@ Eric Hotinger Bro Я понимаю, что моя проблема заключается в том, что я получаю сообщение об ошибке http 401 unauthorized, даже если имя пользователя и пароль верны. Поэтому Iam отсутствует что-то, что позволяет пользователям, сохраненным в базе данных, иметь доступ к следующей странице после входа в систему – moji

ответ

2

Добавление атрибута Authorize без параметров будет предоставлять доступ к любого пользователя, вошедшего в систему:

[Authorize] 
public class PrivateAreaController 
{ 
    // 
} 

Или на индивидуальные действия:

public class MostlyPublicController 
{ 
    [Authorize] 
    public ActionResult GetPrivateStuff() 
    { 
     // 
    } 
} 
+1

Bro Я понимаю, что моя проблема в том, что я получаю ошибку http 401 unauthorized, даже если имя пользователя и пароль верны. – moji

1

Ниже приведены решения:

1- Мне пришлось изменить файл Web.config и добавить следующее:

<authentication mode="Forms"> 
    <forms loginUrl="~/Home/Login" timeout="2880" /> 
</authentication> 

, а затем украсить контроллер с [Авторизоваться]

2- я должен был очистить кук из браузера (Google Chrome), чтобы заставить его работать иначе И все еще быть в состоянии получить доступ к учетной записи контроллера. Очистка файлов cookie удалит старый и запустит новый.