2012-03-07 3 views
1

Для приложения у меня есть пользователи, у которых есть профиль. Это приложение только «с приглашением», и мне нужно, чтобы пользователь заполнял свой профиль, прежде чем делать что-либо еще.ASP.Net MVC 3, как перенаправить все страницы на одно действие

У меня есть атрибут «IsCompleted» boolean в его профиле, поэтому мне не трудно узнать, должен ли пользователь заканчивать свою надпись или нет.

Но как я могу создать что-то, что проверяет на всей странице, что пользователь должен пройти аутентификацию, что пользователь должен быть завершен?

Я думал создать пользовательский атрибут AuthorizeAttribute (на самом деле у меня уже есть один пользовательский, который проверяет некоторые роли), но я не знаю, правильно ли это место для таких элементов управления, и как я могу отличить в HandleUnauthorizedRequest, если запрос был отклонен, поскольку логин недействителен или потому, что пользователь не заполнил его информацию?

ответ

1

Вы можете либо:

а) Поместите их в «ограниченной» роли, пока они не войдут свой профиль, и пусть ручка базовый код авторизации его, а затем добавить их в «полной» роли на входе деталей ,

b) Переопределите метод OnActionExecuting в ваших контроллерах (или лучше всего на базовом контроллере, который вы используете), чтобы проверить, введен ли пользователь в свой профиль, прежде чем обрабатывать остальную часть действия.

+0

для вашего A). Я подумал об этом, но как это сделать, когда у меня есть неполный профиль, я перенаправлен на страницу моего профиля, иначе на страницу входа? B) Можно ли это сделать через фильтр? – J4N

+0

В своем действии для входа в систему, и они относятся к соответствующей роли, вы перенаправляете страницу профиля. Если они попытаются получить доступ к чему-либо еще, они вернутся к логину, их собственная ошибка для попытки обойти вашу систему. – Paddy

0

IF Я понял, что вы имеете в виду, тогда у вас есть это, просто используйте стандартный метод проверки подлинности. Не забывайте, что вы можете использовать группы и роли, поэтому, даже если пользователь аутентифицирован, его можно исключить из некоторых страниц.

+0

Тот же ответ, что и Пэдди: «Как управлять этим, когда у меня есть неполный профиль, я перенаправлен на страницу моего профиля, иначе на страницу входа?» – J4N

+0

Из MSDN: структура возвращает статус ошибки HTTP 401 (разрешено перенаправление по умолчанию на страницу входа в ролевом провайдере). Вы можете использовать это с настраиваемой страницей для ошибок (для перенаправления там, где это необходимо) или переопределить OnAuthorize() в базовом классе для ваших контроллеров (проверьте, что вы должны проверить и перенаправить на страницу профиля, не удовлетворены). –

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