Например, при попытке открыть страницу по ссылке "F1" (см. предыдущий пример) запрашивать имя и пароль.
Для этого надо определить атрибут Authorize у метода TestController.Help:
1 | [Authorize] | ||
2 | public ActionResult Help() | ||
3 | { | ||
4 | ViewData["Text"] = "help"; | ||
5 | return View(); | ||
6 | } |
Теперь при первом обращении к http://localhost:5545/Test/Help будет происходить перенаправление на страницу http://localhost:5545/Account/Login?ReturnUrl=%2fTest%2fHelp
После ввода корректного имени и пароля будет выполнено перенаправление на страницу http://localhost:5545/Test/Help.
Как это работает? ASP.NET MVC считывает у метода атрибут(ы) Authorize примерно следующим образом:
1 | foreach (var a in this.GetMethodAttributes<AuthorizeAttribute>("About")) | ||
2 | System.Diagnostics.Trace.WriteLine(a); |
...
1 | public static class AtttributeHelper | ||
2 | { | ||
3 | public static IEnumerable<T> GetMethodAttributes<T>( | ||
4 | { | ||
5 | if (string.IsNullOrEmpty(name)) | ||
6 | return null; | ||
7 | Type type = obj is Type ? (Type)obj : obj.GetType(); | ||
8 | var ma = type.GetMember(name); | ||
9 | return (ma.Length == 0) | ||
10 | ? null | ||
11 | : ma.First().GetCustomAttributes(typeof(T), true).Cast(); | ||
12 | } | ||
13 | } |
P.S.
Для регистрации на сайте должна быть создана БД (см. здесь)
Комментариев нет:
Отправить комментарий