ASP.NET MVC Урок 1-F / ASP.NET MVC Урок 6
.pdf
Вся соль в строках: DXWK +WWS&RQWH[W FRQWH[W ɢ FRQWH[W 8VHU DXWK &XUUHQW8VHU. Как только наш модуль авторизации узнает о контексте и содержащихся в нем кукисах, ту же моментально получает доступ к имени, по нему он в репозитории получает данныепользователя и возвращает в BaseController. Но не сразу всё, а по требованию.
Подключаем модуль в Web.config:
V\VWHP ZHE!
«
KWWS0RGXOHV!
DGG QDPH $XWK+WWS0RGXOH W\SH /HVVRQ3URMHFW *OREDO$XWK$XWK+WWS0RGXOH!
KWWS0RGXOHV!V\VWHP ZHE!
План таков:
Наверху показываем, авторизован пользователь или нет. Если авторизован, то его email и ссылка на выход, если нет, то ссылки на вход и регистрацию
Создаем форму для входа
Если пользователь правильно ввел данные – то авторизуем его и отправляем на главную страницу Если пользователь выходит – то убиваем его авторизацию
Поехали. Добавляем +WPO$FWLRQ ³8VHU/RJLQ´ ³+RPH´ – это partial view (т.е. кусок кода,
который не имеет Layout) – т.е. выводится где прописан, а не в RenderBody(). _Layout.cshtml (/Areas/Default/Views/Shared/_Layout.cshtml):
ERG\!
GLY FODVV QDYEDU QDYEDU IL[HG WRS!
GLY FODVV QDYEDU LQQHU!
GLY FODVV FRQWDLQHU!
XO FODVV QDY QDY SLOOV SXOO ULJKW!
#+WPO$FWLRQ 8VHU/RJLQ +RPH
XO!
GLY!
GLY!
GLY!
#5HQGHU%RG\
+RPH&RQWUROOHU FV SXEOLF$FWLRQ5HVXOW 8VHU/RJLQ
^
UHWXUQ 9LHZ &XUUHQW8VHU
`
UserLogin.cshtml (/Areas/Default/Views/Home/UserLogin.cshtml):
#PRGHO /HVVRQ3URMHFW 0RGHO 8VHU
#LI 0RGHO QXOO
^
OL!#0RGHO (PDLOOL!
OL!#+WPO$FWLRQ/LQN ȼɵɯɨɞ /RJRXW /RJLQOL!
`
HOVH
^
OL!#+WPO$FWLRQ/LQN ȼɯɨɞ ,QGH[ /RJLQOL!
OL!#+WPO$FWLRQ/LQN Ɋɟɝɢɫɬɪɚɰɢɹ 5HJLVWHU 8VHUOL!
`
Контроллер входа выхода LoginController (/Areas/Default/Controllers/LoginController.cs):
SXEOLF FODVV /RJLQ&RQWUROOHU 'HIDXOW&RQWUROOHU
^
>+WWS*HW@
SXEOLF $FWLRQ5HVXOW,QGH[
^
UHWXUQ9LHZQHZ/RJLQ9LHZ
`
>+WWS3RVW@
SXEOLF $FWLRQ5HVXOW,QGH[/RJLQ9LHZ ORJLQ9LHZ
^
LI0RGHO6WDWH ,V9DOLG
^
YDUXVHU $XWK /RJLQ ORJLQ9LHZ (PDLO ORJLQ9LHZ 3DVVZRUG ORJLQ9LHZ ,V3HUVLVWHQW
LIXVHU QXOO
^
UHWXUQ5HGLUHFW7R$FWLRQ,QGH[ +RPH
`
0RGHO6WDWH>3DVVZRUG@ (UURUV$GGɉɚɪɨɥɢ ɧɟ ɫɨɜɩɚɞɚɸɬ
`
UHWXUQ9LHZ ORJLQ9LHZ
`
SXEOLF $FWLRQ5HVXOW/RJRXW
^
$XWK /RJ2XW
UHWXUQ5HGLUHFW7R$FWLRQ,QGH[ +RPH
`
`
LoginView.cs (/Models/ViewModels/LoginView.cs):
SXEOLF FODVV /RJLQ9LHZ
^
>5HTXLUHG (UURU0HVVDJH ȼɜɟɞɢɬɟ HPDLO@
SXEOLF VWULQJ(PDLO ^JHW VHW`
>5HTXLUHG (UURU0HVVDJH ȼɜɟɞɢɬɟ ɩɚɪɨɥɶ@
SXEOLF VWULQJ3DVVZRUG ^JHW VHW`
SXEOLF ERRO,V3HUVLVWHQW ^JHW VHW`
`
Страница для входа Index.cshtml (/Areas/Default/Views/Index.cshtml):
#PRGHO /HVVRQ3URMHFW 0RGHOV 9LHZ0RGHOV /RJLQ9LHZ
#^
9LHZ%DJ 7LWOH ȼɯɨɞ
/D\RXW a$UHDV 'HIDXOW 9LHZV 6KDUHG B/D\RXW FVKWPO
`
K!ȼɯɨɞK!
#XVLQJ +WPO %HJLQ)RUP ,QGH[ /RJLQ )RUP0HWKRG 3RVW QHZ ^ #FODVV IRUP KRUL]RQWDO `
^
ILHOGVHW!
OHJHQG!ȼɯɨɞOHJHQG!
GLY FODVV FRQWURO JURXS!
ODEHO FODVV FRQWURO ODEHO IRU (PDLO!
(PDLOODEHO!
GLY FODVV FRQWUROV!
#+WPO 7H[W%R[ (PDLO 0RGHO (PDLO QHZ ^ #FODVV LQSXW [ODUJH `
S FODVV KHOS EORFN!ȼɜɟɞɢɬɟ (PDLOS!
#+WPO 9DOLGDWLRQ0HVVDJH (PDLO
GLY!
GLY!
GLY FODVV FRQWURO JURXS!
ODEHO FODVV FRQWURO ODEHO IRU 3DVVZRUG!
ɉɚɪɨɥɶODEHO!
GLY FODVV FRQWUROV!
#+WPO 3DVVZRUG 3DVVZRUG 0RGHO 3DVVZRUG QHZ ^ #FODVV LQSXW [ODUJH `
#+WPO 9DOLGDWLRQ0HVVDJH 3DVVZRUG
GLY!
GLY!
GLY FODVV IRUP DFWLRQV!
EXWWRQ W\SH VXEPLW FODVV EWQ EWQ SULPDU\!
ȼɨɣɬɢEXWWRQ!
GLY!
ILHOGVHW!
`
Запускаем и проверяем:
После авторизации:
Все исходники находятся по адресу https://bitbucket.org/chernikov/lessons
