MVC постачається з ActionFilter Щоб досягти автентифікації ідентичності Asp.NET WebForm, Microsoft пропонує нам три способи, найпоширенішим з яких є автентифікація Form, яку потрібно налаштувати з відповідною інформацією. Наприклад, наступна конфігураційна інформація:
Це означає, що наша сторінка входу — це Login.aspx, сторінка за замовчуванням після успішного входу — Default.aspx, а наша інформація користувача використовує два методи: верифікацію та шифрування. І найважливіше — нам потрібно написати метод авторизації (авторизація нижче має бути написана, інакше марно використовувати лише автентифікацію Forms і потім встановлювати відповідні атрибути), забороняти всім анонімним користувачам, і доступ можуть нормально мати лише ті, хто увійшов у систему. Після цього ми встановлюємо кнопку входу, щоб вводити ім'я користувача в cookie (тобто виконувати FormsAuthentication.SetAuthCookie(name, false); Ось і все. 0 У Asp.Net MVC ми також можемо використовувати автентифікацію Forms, але якщо робити це у WebForm, це не працюватиме. Наприклад, ви налаштовуєте інформацію так:
Ви налаштовуєте логін у своєму Login.aspx, щоб активувати Logon у AccountController для входу, де код входу:
Після цього ви побачите, що ваш Logon не буде виконаний. Яка причина? Чому той самий сетинг не працює в MVC? Причина в тому, що механізм інший, бо ви налаштовуєте метод авторизації, який робить Logon недоступним. То як ми це зробимо? Насправді, у Asp.Net MVC у нас є кращий спосіб зробити все це, нам не потрібен метод авторизації, що означає, що наша конфігураційна інформація виглядає так:
Немає потреби уточнювати, що анонімні користувачі не можуть увійти тощо. Звісно, ви побачите, що цього недостатньо, але ми маємо повідомити систему, які з них потрібно увійти для доступу. Ви, мабуть, думаєте: o()〈))o О, це надто багато клопоту. Це не так, все дуже просто, нам просто потрібно позначити [Authorize] на дії, яку потрібно автентифікувати. Наприклад, у мене є дві сторінки в папці Home — Index і Home, і я хочу, щоб Index був автентифікований для доступу, але Home цього не робить, тому мені потрібно лише дати Index тег Action [Authorize], а саме:
Це дозволяє отримати доступ до Index після входу, тоді як Home не потрібно входити. Якщо вам потрібно авторизувати ролі, ви можете вказати роль при позначенні Authorize (наприклад, [Authorize(Role=Administrators)]), але потрібно використовувати механізм членства, наданий Microsoft, оскільки ваша роль не може існувати просто так, а існує у відповідній базі даних, про яку я згадував в іншому блозі. Налаштуйте ActionFilter Іноді ви можете не відповідати такій автентифікації, або якщо відчуваєте, що недостатньо гнучкі, то це не має значення, Asp.Net MVC дозволяє налаштовувати ActionFilter. Наприклад, тепер я налаштовую автентифікацію:
Якщо потрібне управління користувачами, я визначу фільтри, пов'язані з ролями:
Насправді, ви побачите, що вищезазначені дві атрибути були вирішені вбудованим Authorized у MVC, і тут ми головним чином кажемо, що ви можете розширити його за потреби. Ну, на сьогодні все! Завантаження вихідного коду: FormFormsAuthenticationMvc
|