Dream-Land.by 
Вход
  Поиск  
Программирование, рисование, тестирование
Путешествия
Домашние животные
Скидки в магазинах Минска (Июль 2018)
Концерты
Балет Аллы Духовой TODES. Премьера "И приснится же такое…" г. Минск 26 ноября 2018
Афишу
Спорт занятия
Занятия в тренажерном зале г. Минск
Спорт занятие
Объявления
Творческий мастер-класс для детей "Тролли"
Объявление
Детские центры
Физкультурно-оздоровительный комплекс "Серебрянка" (г. Минск, Беларусь)
Заведение
dir proj
  Посмотрели 54 раз(а)    
 dir proj 
последнее обновление: 11 июля 2018
  Web.config
<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>

  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

 <!-- my loading module -->
 <system.webServer>
    <modules>
      <add name="AuthHttpModule" type="DirProj.Models.AuthHttpModule"/>
    </modules>
 </system.webServer>
  
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=EVGENI\MSSQLSERVER2012;Initial Catalog=DirDatabase;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
    <add name="HomeConnection" connectionString="Data Source=DESKTOP-46KK8MB\SQLEXPRESS;Initial Catalog=DirDatabase;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

</configuration>
  C#     Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

using WebMatrix.WebData;

namespace DirProj
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            // initialize
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "User", "ID", userNameColumn: "USER_NAME", autoCreateTables: true);
        }
    }
}


Views
  Views\Admin\Index.cshtml

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Admin site</title>
</head>
<body>
    <div> 
        Admin sitedefd
        @Html.ActionLink("Выход", "Logout", "Authentication");
    </div>
</body>
</html>
  Views\Authentication\Login.cshtml
@model DirProj.Models.LoginPasswordItem

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Login</title>

    <style>
        .class_login {width:170px;}
        .class_password {width: 170px;}
        .class_label_td_right {text-align:right;padding-right:10px;}
        .class_label_td_left {text-align:left;padding-right:10px;}
    </style>
</head>

<body>
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary()

               <div class="col-md-offset-2">aaa</div>
               <div class="col-md-offset-2">aaa</div>
               
        <center>
        <table border="0">
            <tr>
                <td colspan="2" style="padding-bottom:10px;padding-left:50px;">
                    <font color="#303030" style="font-size:20px;">Авторизация пользователя:</font>
                </td>
            </tr>

            <!-- login -->
            <tr>
                <td class="class_label_td_right">@Html.Label("Login")</td>
                <td class="class_label_td_left">@Html.TextBoxFor(model => model.login, new { @class = "class_login" })</td>
            </tr>

            <!-- password -->
            <tr>
                <td class="class_label_td_right">@Html.Label("Password")</td>
                <td class="class_label_td_left">@Html.PasswordFor(model => model.password, new { @class = "class_password" })</td>
            </tr>


            <tr>
                <td></td>
                <td align="left" style="padding-top:10px;padding-left:60px;"><input type="submit" value="Войти" style="width:100px;"/></td>
            </tr>

            <tr>
                <td colspan="2" style="padding-top:10px;">
                    <hr />
                    Если вы не регистрировались вам нужна @Html.ActionLink("регистрация...", "Register", "Admin")
                </td>
            </tr>
        </table>
        </center>
    }
</body>
</html>
  Views\Home\Index.cshtml
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Dir</title>
</head>
<body style="width:800px;">
     start page

    <div align="right">
        @Html.ActionLink("admin...", "Index", "Admin")
    </div>
</body>
</html>


Models
  C#     Models/AuthHttpModule.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DirProj.Models;
using WebMatrix.WebData;
using System.Security.Principal;

namespace DirProj.Models
{
       public class AuthHttpModule : IHttpModule
       {
              public void Init(HttpApplication context)
              {
                     context.PostAuthenticateRequest += new EventHandler(this.MyAuthenticate);
              }

              private void MyAuthenticate(Object source, EventArgs e)
              {
                     // (current logined user)
                     bool IsAuthenticated = WebSecurity.IsAuthenticated;
                     string login = "";
                     if (IsAuthenticated)
                            login = WebSecurity.CurrentUserName;

                     // set current user
                     HttpApplication app = (HttpApplication)source;
                     app.Context.User = new MyUserPrincipal("my", IsAuthenticated, login);
              }

              public void Dispose()
              {

              }
       }
}
  C#     Models/LoginPasswordItem.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DirProj.Models
{
       public class LoginPasswordItem
       {
              public LoginPasswordItem()
              {
                     login = "";
                     password = "";
              }
              public LoginPasswordItem(LoginPasswordItem item)
              {
                     login = item.login;
                     password = item.password;
              }
              public string login { get; set; }
              public string password { get; set; }
       }
}
  C#     Models\MyUserPrincipal.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Security.Principal;

namespace DirProj.Models
{
   public class MyUserPrincipal : IPrincipal
   {
      public IIdentity Identity {get;set;}

              public MyUserPrincipal(string AuthenticationType, bool IsAuthenticated, string login)
      {
         // create Identity
         Identity = new MyIdentity(AuthenticationType, IsAuthenticated, login);
      }

      public bool IsInRole(string role)
      {
         if (Identity.Name == "evgen" && role == "admin")
            return true;
         return false;
      }
   }

   public class MyIdentity : IIdentity
   {
      public MyIdentity(string AuthenticationType, bool IsAuthenticated, string Name)
      {
         this.AuthenticationType = AuthenticationType;
         this.IsAuthenticated = IsAuthenticated;
         this.Name = Name;
      }

      public string AuthenticationType { get; set; }
      public bool IsAuthenticated { get; set; }
      public string Name { get; set; }
   }
}


Controllers
  C#     Controllers\AdminController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using System.Security.Principal;

using DirProj.Models; /// added

namespace DirProj.Controllers
{
       public class AdminController : Controller
       {
              [MyAuthAttribute (Roles="admin")]
              public ActionResult Index()
              {
                     return View();
              }
       }

       public class MyAuthAttribute : AuthorizeAttribute
       {

              public override void OnAuthorization(AuthorizationContext filterContext)
              {
                     string[] roles = base.Roles.Split(',');

                     // если пользователь принадлежит роли описанной в функции
                     int i = 0;
                     for (i = 0; i < roles.Length; i++)
                     {
                            string roleName = roles[i];
                            if (filterContext.HttpContext.User.IsInRole(roleName))
                                   return;
                     }

                     // ридерект на login
                     filterContext.Result = new RedirectToRouteResult(
                            new System.Web.Routing.RouteValueDictionary { 
                            { "controller", "Authentication" }, { "action", "Login" } 
                     });
              }
       }
}
  C#     Controllers\AuthenticationController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using WebMatrix.WebData;

using DirProj.Models; /// added

namespace DirProj.Controllers
{
       public class AuthenticationController : Controller
       {
              [HttpGet]
              public ActionResult Login()
              {
                     return View(new LoginPasswordItem());
              }

              [HttpPost]
              public ActionResult Login(LoginPasswordItem item)
              {
                     // go to admin
                     if (WebSecurity.Login(item.login, item.password, persistCookie: true))
                            return RedirectToAction("Index", "Home");

                     // relogin
                     return View();
              }

              public ActionResult Logout()
              {
                     WebSecurity.Logout();
                     return RedirectToAction("Index", "Home");
              }
       }
}
  C#     Controllers\HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace DirProj.Controllers
{
       public class HomeController : Controller
       {
              // GET: Home
              public ActionResult Index()
              {
                     return View();
              }
       }
}


Route
  C#     App_Start\RouteConfig.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace DirProj
{
       public class RouteConfig
       {
              public static void RegisterRoutes(RouteCollection routes)
              {
                     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

                     routes.MapRoute(
                            name: "Default",
                            url: "{controller}/{action}/{id}",
                            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                     );
              }
       }
}


my comments
  books!!!\mvc_websecurity.html
http://metanit.com/sharp/mvc/11.3.php
http://metanit.com/sharp/mvc5/8.2.php
http://metanit.com/sharp/mvc5/8.3.php

***** [1] Add class WebSecurity in mvc project ******
  1) add packages
     click 'Tools' in main menu -> NuGet Package Manager ->  Package Manager Console
     PM> Install-package WebMatrix.WebData
     PM> Install-Package Microsoft.AspNet.WebHelpers
     PM> Install-Package Microsoft.AspNet.WebPages.Data

  2) initializing WebSecurity (need table with columns: ID as primary key, USER_NAME as text)
    a) add in Global.asax.cx  using WebMatrix.WebData;
        b) in end function Application_Start()
        // initialize
        WebSecurity.InitializeDatabaseConnection("DefaultConnection", "User", "ID", "USER_NAME", autoCreateTables: true);

  3) link WebSecurity with database
    In Web.config  add connection string 
    // Data Source=EVGENI\MSSQLSERVER2012 (server)
    // Initial Catalog=DirDatabase (database name)
        <connectionStrings>
      <add name="DefaultConnection" connectionString="Data Source=EVGENI\MSSQLSERVER2012;Initial Catalog=DirDatabase;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
    </connectionStrings>
*********************************************************

***** [2] Set user after login ***** 
  1) Implement class MyUserPrincipal : IPrincipal
     Implement class MyIdentity : IIdentity  
  2) Implement class AuthHttpModule : IHttpModule
  3) add in Web.config
   <!-- my loading module -->
   <system.webServer>
     <modules>
       <add name="AuthHttpModule" type="DirProj.Models.AuthHttpModule"/>
     </modules>
   </system.webServer>
 
***** [3] set action methods with authorize ***** 
  1) Implement class MyAuthAttribute : AuthorizeAttribute
  2) Admin Controler
    public class AdminController : Controller
    {
        [HttpGet]
        public ActionResult Login()
        {
            return View(new LoginPasswordItem());
        }

        [HttpPost]
        public ActionResult Login(LoginPasswordItem item)
        {
                       // go to admin
           if (WebSecurity.Login(item.login, item.password, persistCookie: true))
                              return RedirectToAction("Home");

                       // relogin
           return View();
        }

        [MyAuthAttribute]
        public ActionResult Home()
        {
            return View();
        }

                public ActionResult Logout()
                {
                       WebSecurity.Logout();
                       return RedirectToAction("Index", "Home");
                }
        }

******* errors *********
1) error: can't insert null in column ID for primary key
answer: in MS SQL Server 2012 when create table need set auto increment
       new column name: ID int 
   Identity Specification: Yes
     (Is Identity): Yes
     (Identity Increament): 1
     (Identity Speed): 1
   Set As Primary Key
   
2) error: Invalid object name 'webpages_Membership'
answer: set autoCreateTables: true in function WebSecurity.InitializeDatabaseConnection
Ваши Отзывы ... комментарии...
   
Вашe имя:
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Картинки

Объявления
  Языки программирования и другое  

Тема: 'HTML'

Тема: 'JS'

Тема: 'Графика, таблицы, диалоги и многое другое для WEB страниц'

Тема: 'JavaScript технологии'

Тема: 'SQL база данных'

Тема: 'Работа с базой данных на C#'

Тема: 'Microsoft C# и .NET'

Тема: 'Git'

Тема: 'Разработка игр'

Тема: 'Mono (виртуальная машина для C# в Unix)'

Тема: 'WEB сайт'

Тема: 'WEB сервер'

Тема: 'bat файлы'

Тема: 'Операционные Системы'

Тема: 'Программы для разработки (интегрированные среды для разработки IDE)'

Тема: 'Компьютерная платформа (процессор)'

Тема: 'Распознавание картинки в текст'

Тема: 'Рисуем картинки, видео'

Тема: 'PDF to word, images'

Тема: 'Регулярные выражения'

Тема: 'Резюме (как найти работу)'
Концерты, шоу, спектакли, пьесы, выставки в Беларуси ...
Спектакль "Поле битвы"
с 6 июля
до 21 сентября 2018
г. Минск Театр-студия киноактера
Спектакль "номер 13"
с 1 июля
до 30 сентября 2018
г. Минск Театр-студия киноактера
Спектакль "Двенадцатая ночь"
с 27 июня
до 28 августа 2018
г. Минск Театр им. Максима Горького
Открыт аквапарк "Dreamland"
с 1 июня
до 31 августа 2018
г. Минск Парк и аквапарк "Дримлэнд"
Выставка ярмарка "Мебель - 2018"
с 12 сентября
до 15 сентября 2018
г. Минск Футбольный манеж
Детский спектакль "Просто Карлсон"
22 июля 2018
г. Минск Концертный Зал "Минск"
Сказка "Крошка енот"
с 24 июня
до 22 июля 2018
г. Брест Брестский Академический Театр Драмы им. Ленинского комсомола
Концерт группы "АукцЫон"
11 октября 2018
г. Минск Концерт-холл "Prime Hall" (Прайм холл)
Концерт-трибьют группы "Король и Шут"
19 июля 2018
г. Минск Клуб "re:public"
  Спортивные занятия  
Занятия в тренажерном зале
г. Речица
Спортивный комплекс "Гармония"
(улица Советская, 38)
Катание на коньках
г. Барановичи
Ледовый Дворец
(проспект Советский, 20)
Занятия в тренажерном зале
г. Речица
Спортивный комплекс "Импульс"
(улица Нефтяников, 74)
Бильярд
г. Минск
Торгово-развлекательный центр "Титан"
(проспект Дзержинского, 104)
Занятия в тренажерном зале
г. Брест
Ледовый дворец
(ул. Московская, 151)
Настольный теннис
г. Бобруйск
Бобруйск-Арена (Ледовый дворец)
(ул. Карбышева, 11)
Катание на коньках
г. Бобруйск
Бобруйск-Арена (Ледовый дворец)
(ул. Карбышева, 11)
Обучение плаванию (детей и взрослых)
г. Минск
Дворец культуры железнодорожников
(ул. Чкалова, 7)
Рассказы про отдых в Беларуси
Купание в аквапарке "Фристайл"
16 августа 2016
Беларусь
Рассказы о Путешествиях
Отдых зимой в Объединенных Арабских Эмиратах
10 января 2015
Объединенные Арабские Эмираты
Объявление
Анонс! Цирк-Шапито "Sirius" а/г Колодищи с 19 по 22 июля 2018  
Комментариев 90
гость: 14 июля 2018 +++
Анонс! Славянский Базар 2018  
г. Витебск с 9 по 18 июля 2018
Комментариев 6
23 июня 2016 В прошлом году было великолепно! Едем снова!
Объявления
Компании, офисы
EPAM Systems
г. Гродно

Концерты, выставки
Спортивные занятия
Детские центры
Кино
Книги
Бесплатные объявления
Праздники
Скидки в магазинах Минска
Домашние животные
Программирование и технологии
Игра
Путешествия
Форум (обсуждение)
vsedetkam.by для детей
Архив Евровидений

Ваши вопросы, предложения присылайте по почте: info@dream-land.by
Яндекс.Метрика