MVC поставляется с фильтром ActionFilter Для достижения аутентификации личности Asp.NET WebForm Microsoft предлагает нам три способа, наиболее распространённый из которых — аутентификация формы, которую необходимо настроить с соответствующей информацией. Например, следующая информация о конфигурации:
Это значит, что наша страница входа — Login.aspx, страница по умолчанию после успешного входа — Default.aspx, а информация о пользователях использует два метода: верификацию и шифрование. И самое главное — нам нужно написать метод авторизации (авторизация ниже должна быть написана, иначе бесполезно использовать только аутентификация Forms и затем устанавливать соответствующие атрибуты), запрещать всем анонимным пользователям, и только авторизованные пользователи имеют доступ в обычный режим. После этого мы устанавливаем кнопку входа так, чтобы имя пользователя вписывалось в куки (то есть выполняет FormsAuthentication.SetAuthCookie(name, false); Ну вот. 0 В Asp.Net MVC мы также можем использовать аутентификацию форм, но если делать это в WebForm, это не сработает. Например, вы настраиваете информацию следующим образом:
Вы настроили логин в Login.aspx, чтобы запустить вход в AccountController для входа, где код входа:
После этого вы обнаружите, что ваш Logon не будет выполнен. В чём причина? Почему такая же настройка не работает в MVC? Причина в том, что механизм отличается, потому что вы настроили метод авторизации, который делает Logon недоступным. Так как же это сделать? На самом деле, в Asp.Net MVC у нас есть лучший способ сделать всё это, нам не нужен метод авторизации, поэтому наша конфигурационная информация выглядит так:
Нет необходимости указывать, что анонимные пользователи не могут войти в систему и так далее. Конечно, вы обнаружите, что этого недостаточно, но нам нужно сообщать системе, какие из них нужно войти для доступа. Возможно, вы думаете: o()〈))o О, это слишком хлопотно. Это не так, всё очень просто, нам просто нужно отметить [Authorize] на действии, которое нужно аутентифицировать. Например, у меня есть две страницы в папке Home — Index и Home, и я хочу, чтобы Index был аутентифицирован для доступа, но Home этого не делает, поэтому мне нужно только указать Index тег Действия [Authorize], то есть:
Это позволяет получить доступ к Index после входа, в то время как Home не требует входа. Если вам нужно авторизировать роли, вы можете указать роль при маркировке Authorize (например, [Authorize(Role=Administrators)]), но вам нужно использовать механизм членства, предоставленный Microsoft, потому что ваша роль не может существовать просто так, а существует в соответствующей базе данных, о которой я упоминал в другом блоге. Настройте ActionFilter Иногда вы не можете пройти такую аутентификацию, или если чувствуете, что недостаточно гибки, то это не важно, Asp.Net MVC позволяет настраивать ActionFilter. Например, теперь я настраиваю аутентификацию:
Если требуется управление пользователями, я определю фильтры, связанные с ролями:
На самом деле, вы обнаружите, что вышеуказанные два атрибута были решены встроенным авторизованным элементом MVC, и здесь мы в основном говорим, что при необходимости вы можете его расширить. Ну вот, на сегодня всё! Загрузка исходного кода: FormFormsAuthenticationMvc
|