Dream-Land.by 
Вход
  Поиск  
Програмирование
dir proj
  Посмотрели 145 раз(а)    
 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'
Html & CSS

Тема: 'JS'
JavaScript
jQuery - фрэймворк для удобной работы с JavaScript
Three.js - библиоткеа отображения 3D графики на JavaScript
prototype.js - фрэймворк для удобного написания классов и наследования в JavaScript

Тема: 'Графика, таблицы, диалоги и многое другое для WEB страниц'
jQuery UI - кнопки, меню, диалог, slider, spinner и т.д.. Эфекты: растягивание, перетаскивание и т.д.
jq Plot - диаграммы, графические линии
Bootstrap - кнопки, меню, диалог, slider и т.д... Контейнеры для размещения элементов
Kendo UI - редактор текста, excell редактор, chart и т.д....

Тема: 'JavaScript технологии'
Node.js (это web сервер исполняющий js файлы)
React.js
Angular

Тема: 'SQL база данных'
Microsoft SQL Server (база данных)
SQL (язык запросов в базе данных)

Тема: 'Работа с базой данных на C#'
ADO.NET (работа с базой данных на C#)
Entity Framework (работа с базой данных на C#)
LINQ to Database (работа с базой данных на C#)

Тема: 'Microsoft C# и .NET'
С# (язык программирования)
Managed C++ (переходный код между C++ и C#)
Windows Forms (отдельное приложение exe файл)
WPF. Windows Presentation Foundation (отдельное приложение exe файл)
ASP.NET Web Forms (web сайт на aspx страницах). Это устаревшая технология!
ASP.NET MVC (web сайт на архитектуре Model-View-Controller)
.NET Core
ASP.NET Core
Web API (веб-служба работающая по протоколу HTTP)
Windows Communication Foundation (веб-служба работающая через интерфейсы)
Silverlight
Microsoft XNA
Xamarin (приложение на C# для iOS, Android, Windows Phone)
Собеседование (вопросы и задания C# и платформа .NET)

Тема: 'Автоматическое тестирование'
Автоматическое юнит тестирование (MSTest, NUnit, xUnit, Moq)

Тема: 'Рефакторинг & Паттерны'
Рефакторинг кода
Паттерны (шаблоны) проектирования

Тема: 'Git'
Git Extensions  &  GitHub.com

Тема: 'Разработка игр'
Моя игра "Animal Go". Технологии: C#, Android, Windows

Тема: 'Технологии для написания игр'
MonoGame - разработка 2D игр на C# для Android, iOS, Windows
Unity - разработка 3D игр на C# для Android, iOS, Windows
LibGDX - разработка игр на Java для Android
Разработка игр на HTML5, CSS3, Javascript для Android

Тема: 'WEB сайт'
Создание Web сайта и управление (регистрация сайта, копирование файлов на сайт, сохранение базы данных)
Yandex сервисы для Web сайта (счетчик посещений, карта улиц, переводчик языков, контекстная реклама, ...)
Google сервисы для Web сайта
Продвижение WEB сайта

Тема: 'Языки программирования'
PHP (язык программирования для быстрого написания Web сайта)
Java
Python
C++

Тема: 'Интернет браузеры'
Интернет браузер "Google Chrome"

Тема: 'WEB сервер'
Что такое WEB сервер ?

Тема: 'bat файлы'
.bat файл (команды)

Тема: 'Операционные Системы'
Windows (операционная система для персональных компьютеров)
Android (операционная система для телефонов, планшетов)
iOS (операционная система для iPhone телефонов, iPad планшетов, MacBook ноутбуков)

Тема: 'Программы для разработки (интегрированные среды для разработки IDE)'
Visual Studio (интегрированная среда разработки) работает в Windows и macOS. Для написания программ на C#, С++
Открываем Visual Studio
Удаляем и устанавливаем NuGet в Visual Studio
Visual Studio Code (редактор кода) работает в Windows, macOS, Linux. Для написания программ на JavaScript, Perl, Python, Java, C#

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

Тема: 'Распознавание картинки в текст'
Распознать (перевести) картинку в текст (ONLINE)

Тема: 'Рисуем картинки, видео'
Рисуем карандашом (животных, машинки, сказочных героев)
Рисование в CorelDraw
Видео (редактирование, создание)
Делаем животных, цветочки из длинного шарика ШДМ

Тема: 'PDF to word, images'
Convert PDF to Word (online)
Convert FB2 to PDF (online)

Тема: 'Регулярные выражения'
Регулярные выражения (проверить онлайн)

Тема: 'Резюме (как найти работу)'
Как написать резюме, причины перехода на другую работу
-
Картинки для мой игры
dir proj
MyLibraryMVC
Объявления
 

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

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