2016-04-27 6 views
0

Я разрабатываю приложение ASP.Net MVC. У меня есть форма входа для админов. Когда администратор входит в систему, он перенаправляется на домашнюю страницу.Глобальная проверка для входа администратора

Теперь, когда я нажимаю на меню Employee, он перенаправляется на Employee/Index. В методе Index я проверяю, зарегистрирован ли администратор. Мне нужно проверить каждый метод контроллера Employee для входа администратора.

Есть ли способ проверить вход администратора для всей области администрирования. Здесь администратор может создавать, обновлять, удалять сотрудников, хранилище и т. Д. Итак, есть ли способ проверить adminlogin только один раз, а не весь метод Index, Create, Delete, Edit?

Все как

// Controller of EmployeeController 
public EmployeeController() 
{ 
    if (Session["Admin"] == null) 
    { 
     // return to AdminLogin 
    } 
} 

Потому что, когда я вхожу url в браузере - localhost:9999/Admin/Employee/Create, он перенаправляется Создать страницу без входа в систему. Я не хочу проверять все методы контроллера.

+0

Ive обновил ваше название, чтобы отразить ваш вопрос - поскольку он был прочитан как проблема XY, вы решили, что решение этого вопроса должно состоять в том, чтобы вернуть результат из конструктора (?) - его нет, но в ASP.NET MVC ваш вопрос имеет очень стандартизованное решение. – Jamiec

+0

Вы используете Identity? Если да, украсите ваши методы действий с помощью [Authorize (Roles = "Admin")] –

+0

Я сохранил 'Usesrname' и' password' в базе данных. – DhavalR

ответ

1

Вы должны применить Autorize атрибут на методы действий или контроллера класса вам нужно, и проверить роли администратора, как это:

[Authorize(Roles = "Admin")] 

Существует подробное обсуждение этого вопроса в asp.net mvc and check for if a user is logged in.

0

Чтобы избежать опечаток, особенно в случае использования Authorize я рекомендую иметь статический класс для Roles

public static class Roles 
    { 
     public const string Admin = "Admin"; 
    } 

Тогда при декорировании вы можете сделать это;

[Authorize(Roles = Roles.Admin)] 

Потому что вы не хотите перепечатывать "Admin" каждый раз, что может привести к ошибке в коде, когда вы сделаете опечатку.

Смежные вопросы