2014-02-19 6 views
0

, поэтому у меня есть вопрос о теге [Authorize]. Мне нужен пользователь, чтобы роль администратора посещала определенное представление. Он отлично работает и только позволяет «администратору» перейти к нему вместо «пользователя». Но всякий раз, когда пользователь посещает это дает мне это:Редирект Авторизовать атрибут, если он не отображается в другом представлении в asp.net mvc

Server Error in '/' Application. 

The resource cannot be found. 

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /Login.cshtml 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009 

Так что мой вопрос, когда пользователь посещает, как я могу перенаправить их на другую точку зрения?

Так что это мой контроллер для индекса:

[Authorize(Users = "Admin")] 
     public ActionResult Index() 
     { 
      var user = db.User.Include(u => u.UserRole); 
      return View(user.ToList()); 
     } 
+0

Похоже, что у вас нет входа в систему, в web.config определяется, какую страницу загружать, когда пользователь несанкционирован, по умолчанию используется login.cshtml. – OJay

+0

Итак, у меня есть вид входа (то есть Login.cshtml, сделанный из пользовательского контроллера), является ли это по умолчанию в теге autentication в web.config? – Shawn

ответ

1

Вы можете решить эту проблему двумя способами:

  1. Пусть действие индекс будет доступен анонимным пользователем, и на основе роли вызова различных функций ,
  2. Создайте свой собственный атрибут авторизации (вы можете найти пример here).

Оба подхода являются точными, без каких-либо особых преимуществ/недостатков над одним и другим, поэтому вы можете выбрать любой из них.

Надеюсь, это поможет.

+0

Итак, класс авторизации в примере создается в моделях? – Shawn

+1

Не обязательно. Вы можете создать его в любом месте, просто привяжите его к вашему модулю. например используя ApplicationXYZ.AuthorizationNameSpace.AuthClass; –

+0

Удивительный, поэтому я немного ближе. Теперь, когда пользователь пытается получить доступ к странице. URL перенаправляется на «http: // localhost: 62839/Shared/Unauthorized», единственная проблема заключается в том, что та же ошибка появляется, что я опубликовал в главном вопросе. (Unauthrized.cshtml находится в моей общей папке) – Shawn