рдирдорд╕реНрддреЗред
рдЖрдЬ рдореИрдВ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдкрд╛рда рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рд╕реНрддрд░ рдмрд╣реБрдд рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ), рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреИрд╕реЗ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╕рд╛рде рд╣реА
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЬрдм рд╡реЗ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдПрдорд╡реАрд╕реА рдлреНрд░реЗрдорд╡рд░реНрдХ (4) рдХреЗ рдорд╛рдирдХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред
рдкреГрд╖реНрдарднреВрдорд┐
рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рднреБрдЧрддрд╛рди (рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ, рдЛрдг, рд╕реНрдХреВрд▓, рдЖрджрд┐) + рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА (рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрд░реЗрдЦ) рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди, рд╡реНрдпрдп, рдЖрдп, рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡реЗрдмрд╕рд╛рдЗрдЯ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ Google рдбреЙрдХреНрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдиреЗ рдореБрдЭреЗ рдФрд░ рдореЗрд░реА рдкрддреНрдиреА рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐
рд╕реВрдЪрдирд╛ рдХреЛ рдХреИрд╕реЗ
рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдП , рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рд┐рд╡рд╛рд░ рдХреА рдЖрд░реНрдерд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЪреБрднрддреА рд╣реБрдИ рдЖрдВрдЦреЛрдВ рд╕реЗ,
рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рддрд╣рдд рдФрд░
рдПрдХреНрд╕реЗрд╕ рд░реЛрд▓реНрд╕ (рдкреНрд░рд╛рдзрд┐рдХрд░рдг) рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ - рдПрдХ рдкрддреНрдиреА, рдмрдЪреНрдЪреЗ, рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдПрдХ
рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрд░рдореБрдЦ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
UPD: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ, рднреВрдорд┐рдХрд╛рдПрдБ рдЕрдзрд┐рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ (рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ)
рдореЗрдиреВ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ MVC рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдЕрдзрд┐рдХ рд╕рд╣реА рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдЕрдиреБрдХрд░рдгреАрдп рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп - рдЬрд┐рди рдХрд╛рд░рдгреЛрдВ рдиреЗ рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдФрд░ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдиреЛрдЯреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ ">
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ C #, MVC4 рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдереА - рдореИрдВ рдПрдХ рд╢реБрд░реБрдЖрддреА рд╣реВрдВред
рдореИрдВрдиреЗ рдХрдИ рд╢рд╛рдореЗрдВ рдЦреЛрдЬ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдФрд░ рдЙрдирдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЧреБрдЬрд╛рд░рдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдИрдВ, рдЬрдм рддрдХ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдмрд╛рд░ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓реЗрдЦ рдХрд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рдерд╛ - рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдореЗрдВ рдХрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдпрд╛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдкрд░ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╛ рдХреЛрдб рд╣реЛ, рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдореБрдЭреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреА рдпрд╛рдж рдЖрдИ (рдореИрдВ рдПрдХ рд╢реБрд░реБрдЖрддреА рд╣реВрдВ), рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рджрд░реНрд╢рдХреЛрдВ рд╕реЗ рдкреНрд░реЙрдорд┐рд╕ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рд░рд▓ рд╕рд╛рдЗрдЯ рдмрдирд╛рдИ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдПрдорд╡реАрд╕реА 4 рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдЖрдкрдХреА рдлрд┐рд▓реНрдореЛрдВ рдХреА рдПрдХ рд╕рд░рд▓ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП (рдЗрд╕рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрднрдЧ 20 рдорд┐рдирдЯ рд▓рдЧреЗ)ред
рдпрд╛,
рдореНрдпреВрдЬрд┐рдХ рдПрд▓реНрдмрдо рдмреЗрдЪрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдмрдирд╛рдиреЗ рдкрд░ (рджреВрд╕рд░рд╛, MVC3 рдХреА рдЪрд┐рдВрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде MVC рдХрд╛ рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд░реЗрдВ), рджреВрд╕рд░реЗ,
рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ MVC рдХрд╛ рдЕрдзреНрдпрдпрдиред
рджреВрд╕рд░реЗ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ MVC4 рдореЗрдВ MVC3 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИрдВ, рдФрд░ рдореИрдВ рдкрд┐рдЫрд▓реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЙрдбрд▓ рдФрд░ рдореЙрдбрд▓ рд╕реЗ рдкреБрд░рд╛рдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдХреЛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд╢рд░реНрдд:
рдирдИ MVC4 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рджрд╛рдИрдВ рдУрд░, рд╢реАрд░реНрд╖ рдкрд░, рдЬрдм рдЖрдк рд╕рд╛рдЗрдЯ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рджреЛ рдорджреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдореЗрдиреВ рд╣реЛрддрд╛ рд╣реИ - "рдкрдВрдЬреАрдХрд░рдг" рдФрд░ "рд╕рд╛рдЗрди рдЗрди"ред

рд╕рдВрджрд░реНрдн рдХреА рд╢рд░реНрддреЗрдВ:
"рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ" рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рднреВрдорд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд▓ рдЪрд▓рд╛рдПрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдХрд╛рдо рдХрд╛ рдорд╛рд╣реМрд▓:
рдореЗрд░реЗ рдкрд╛рд╕ Visual Studio 2012 Express, .Net 4.5, SQL 2012 рдФрд░ MVC4 (рд╕рд╛рде рд╣реА TFS2012 рдПрдХреНрд╕рдкреНрд░реЗрд╕) рдХреА рд╕рд╛рдорд╛рдиреНрдп рд░реВрд╕реА-рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред рдпрд╣ рд╕рдм Windows 2008R2 рдкрд░ рд░рд╣рддрд╛ рд╣реИ), рдпрджрд┐ рдЖрдк рдирд╛рдо, рдореЗрдиреВ рдЖрдЗрдЯрдо рдФрд░ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛
рднрдВрдбрд╛рд░рдг рдХреА рддреИрдпрд╛рд░реА
рдореИрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛,
- App_Data рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛, рдЦрд╛рд▓реА рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЪрд▓реЛ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдХрд╣рддреЗ рд╣реИрдВред
- рд╣рдорд╛рд░реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ web.config рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЖрдорддреМрд░ рдкрд░ (рдлрд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ), рдПрдХ рдРрд╕рд╛ рдЖрдЗрдЯрдо рдЬреЛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯ рд╕реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдиреЗрдХреНрд╢рди DefaultConnection рдХрд╛ рдирд╛рдо рдХреЗрд╡рд▓ рд╕рд╣реА рдФрд░ рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдЖрдЗрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдЧрд╛)ред
<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MyMoney-2132141343;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\users.mdf" providerName="System.Data.SqlClient" /> <add name="payDBContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MyMoney-data;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MyMoney.mdf" providerName="System.Data.SqlClient" /> </connectionStrings>
рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддреГрдд:
рдХрдиреЗрдХреНрд╢рди рдХреА рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдиреЗрдХреНрд╢рди "DefaultConnection" рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛, рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕, payDBContext рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
DefaultConnection рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рд╣рдо рдмрджрд▓рддреЗ рд╣реИрдВ:
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ "рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреИрдЯрд▓реЙрдЧ = рдПрд╕реНрдкрдиреЗрдЯ-рдорд╛рдпрдореЛрдиреА -2132141343", рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
- рдмрд┐рдВрджреБ "AttachDBFilename = | DataDirectory | \ users.mdf", рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреАред рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдирд╛рдо рдЬреЛ рд╣рдордиреЗ App_Data рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ, рд╡рд╣ "users.mdf" рд╣реИред
- рдЕрдм рдЖрдк рд╕рд╛рдЗрдЯ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЙрдЧ рдЗрди рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
- рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ, рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╕рд╣реА, рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЦреЛрд▓реЗрдВ
рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓рддрд╛ рд╣реИ

- рднреВрдорд┐рдХрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк accountmodel.cs рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
public class UsersContext : DbContext { public UsersContext() : base("users") { } public DbSet<UserProfile> UserProfiles { get; set; } public DbSet<webpages_Roles> webpages_Roles { get; set; }
рдлрд┐рд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рднреВрдорд┐рдХрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ)

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг "рдЦрд╛рддрд╛" рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ, рддрд░реАрдХреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдпрд╛ рдХрдИ рднреВрдорд┐рдХрд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ Roles.AddUserToRole () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднреВрдорд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░рдирд╛, рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ред рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рддреНрддреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ (рдЖрдк рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХреЛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ), рдЖрдкрдХреЛ рдЙрдЪрд┐рдд рдкрд╣реБрдВрдЪ рд╕реЗрдЯрд┐рдВрдЧ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
[Authorize(Roles = "Admin")]
namespace MyMoney.Controllers { [Authorize(Roles = "Admin")] public class catController : Controller {
рдпрд╛ рдХрдИ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реА рд▓рд╛рдЗрди рдбрд╛рд▓реЗрдВ
[Authorize(Roles = "Admin, User")]
рдЕрдм рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрдиреВ рд╕реВрдЪреА рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
- рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ рдореЗрдВ, рдореИрдВ "_Menu" рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп (рдЙрд░реНрдл рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп) рдмрдирд╛рддрд╛ рд╣реВрдВ
рд╕реНрд░реЛрдд рдХреЛрдб, рд╡реИрд╕реЗ, рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЧрдпрд╛ @{ var menus = new[] { new { LinkText=" ", ActionName="Index",ControllerName="Home",Roles="All" }, new { LinkText=" ", ActionName="About",ControllerName="Home",Roles="All" }, new { LinkText="", ActionName="Contact",ControllerName="Home",Roles="All" }, new { LinkText="", ActionName="Index",ControllerName="payments",Roles="Admin,User" }, }; } <ul id="menu"> @if (HttpContext.Current.User.Identity.IsAuthenticated) { String[] roles = Roles.GetRolesForUser(); var links = from item in menus where item.Roles.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries) .Any(x => roles.Contains(x) || x == "All") select item; foreach (var link in links) { @: <li> @Html.ActionLink(link.LinkText, link.ActionName,link.ControllerName)</li> } } else{ var links = from item in menus where item.Roles.Split(new String[]{","},StringSplitOptions.RemoveEmptyEntries) .Any(x=>new String[]{"All","Anonymous"}.Contains(x)) select item; foreach ( var link in links){ @: <li> @Html.ActionLink(link.LinkText, link.ActionName, link.ControllerName)</li> } } </ul>
- рдЕрдм рдЖрдкрдХреЛ рдЗрд╕реЗ markup /Views/Saring/_Layout.cshtml рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рд╣рдо _Layout.cshtml рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
<section id="login"> @Html.Partial("_LoginPartial") </section> <nav> <ul id="navlist"> <li class="first"><a href="@Url.Content("~")" id="current">Home</a></li> <li><a href="@Url.Content("~/Store/")">Store</a></li> <li>@{Html.RenderAction("CartSummary", "ShoppingCart");}</li> <li><a href="@Url.Content("~/StoreManager/")">Admin</a></li> </ul> </nav>
рдФрд░ рдмреНрд▓реЙрдХ рдХреЛ рдмрджрд▓реЗрдВ <nav> ... </nav>
рдкрд░
<nav> @Html.Partial("~/Views/Shared/_Menu.cshtml") </nav>
- рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрдиреВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ, рдпрд╣рд╛рдВ рджреГрд╢реНрдп рдХреЛрдб рд╣реИред
рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╕рдмрдорд┐рд╢рди рдХреЛрдб @{ var menus = new[] { new { LinkText="Home", ActionName="Index",ControllerName="Home",Roles="All" }, new { LinkText="About", ActionName="About",ControllerName="Home",Roles="Anonymous" }, new { LinkText="Contact", ActionName="Contact",ControllerName="Home",Roles="Anonymous" }, new { LinkText=" ", ActionName="Create",ControllerName="pay",Roles="Admin,User" }, new { LinkText=" ", ActionName="Index",ControllerName="pay",Roles="Admin,User" }, new { LinkText=" ", ActionName="Create",ControllerName="cat",Roles="Admin" }, new { LinkText=" ", ActionName="Index",ControllerName="cat",Roles="Admin,User" }, new { LinkText=" ", ActionName="Create",ControllerName="user",Roles="Admin" }, new { LinkText=" ", ActionName="Index",ControllerName="user",Roles="Admin" }, new { LinkText=" ", ActionName="Create",ControllerName="type",Roles="Admin" }, new { LinkText=" ", ActionName="Index",ControllerName="type",Roles="Admin" }, //new { LinkText="", ActionName="",ControllerName="",Roles="Administrator" }, }; } @{ ViewBag.Title = " "; } <h2> </h2> <p>: @User.Identity.Name</p> <p> :</p> <table> <tr> @{ foreach (string item in Roles.GetRolesForUser()) { <li>@item</li> } } </tr> </table> <ul id="list"> @if (HttpContext.Current.User.Identity.IsAuthenticated) { String[] roles = Roles.GetRolesForUser(); var links = from item in menus where item.Roles.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries) .Any(x => roles.Contains(x) || x == "All") select item; foreach (var link in links) { @: <li> @Html.ActionLink(link.LinkText, link.ActionName, link.ControllerName)</li> } } else { var links = from item in menus where item.Roles.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries) .Any(x => new String[] { "All", "Anonymous" }.Contains(x)) select item; foreach (var link in links) { @: <li> @Html.ActionLink(link.LinkText, link.ActionName, link.ControllerName)</li> } } </ul>
рдЕрдм рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ, рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐, рдЕрдирд╛рдо рд▓реЙрдЧрд┐рди рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд┐рдП рдЧрдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдЙрд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрда рдкрд░ рдмрд╛рдж рдХреЗ рд░рд┐рдЯрд░реНрди рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝реЙрд░реНрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд▓реЗрдЦрдХ рдерд╛ред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЕрдирд╛рдо рд▓реЙрдЧрд┐рди

рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рд▓реЙрдЧрд┐рди

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ рд▓реЙрдЧрд┐рди

рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреАрдЕрднреА рдореИрдВ рдЬреЛ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрдзрд┐рдХреГрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдбреЗрдЯрд╛ рдХреА рд░рд╕реАрдж рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЕрдм Google рдбреЙрдХреНрд╕ рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╡реНрдпрдп / рдЖрдп рдХрд╛ рдЖрд░рдВрднрдХрд░реНрддрд╛ рдерд╛ - рдФрд░ рджреЛ рдмрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░рдирд╛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИред рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдПрдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рддреНрд░ рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ IE рд╣реИред
рд╣рд╛рдВ, рдХреЛрдб рдХреЗ рдХреБрдЫ рдЕрдВрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рджрд░реНрдж рд╕реЗ рд╣рд░рд╛ рджреЗрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдФрд░ рд╕реБрдзрд╛рд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рд╕реА рдХреА рдорджрдж рдХреАред