СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Разработка кода ИС Практическая работа №25

Категория: Информатика

Нажмите, чтобы узнать подробности

https://cloud.mail.ru/public/J74D/CNMnoNvJi - МАТЕРИАЛ К ПР №25

Просмотр содержимого документа
«Разработка кода ИС Практическая работа №25»

Практическое занятие № 25

Тема: Реализация авторизации по ролям

Цель работы: получить практический опыт реализации системы авторизации на основе ролей в приложении.

Приобретаемые умения и навыки: умение реализовать механизмы аутентификации пользователей.

Норма времени: 2 часа.

Оборудование: Компьютер с установленным программным обеспечением и подключенный к Internet.

Методические указания по выполнению практической работы

Использовать готовый скрипт «database.sql». Его необходимо восстановить.

Сделать схему к базе данных:



Рисунок – Схема базы данных



СОЗДАНИЕ ПРОЕКТА

Запустите Visual Studio 2022, перейдите File – Project.

Выберите Visual C#– WPF App, укажите имя проекта.

После нажатия кнопки «OK» создастся проект с пустой формой.

Создаём 2 папки:

Производим подключения базы данных, для этому подключаем модель

Переходим в SQL Server находим название соединения.

Находим свою БД

Открываем AppData:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Media.Animation;


namespace Project1.ADO

{

internal class AppData

{

public static databaseEntities4 db = new databaseEntities4();

public static ClientAuthorization CurrentUser = null;

}

}









Разметка MainWindow.xaml:

Window x:Class="Project1.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:local="clr-namespace:Project1"

mc:Ignorable="d"

Title="MainWindow" Height="450" Width="800"

Grid

Frame Name="MainFrame"

NavigationUIVisibility="Hidden"/

Grid

Window

MainWindow.xaml.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using Project1.Views;


namespace Project1

{

///

/// Логика взаимодействия для MainWindow.xaml

///

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

MainFrame.Navigate(new SignInPage());

}

}

}



Разметка SignInPage.xaml:

В этой разметки прописать

Page x:Class="Project1.Views.SignInPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:local="clr-namespace:Project1.Views"

mc:Ignorable="d"

d:DesignHeight="450" d:DesignWidth="800"

Title="SignInPage"


Grid Background="White"

StackPanel VerticalAlignment="Center"

Width="200"

HorizontalAlignment="Center"

TextBlock Text="Login"/

TextBox Name="TbxLogin"/

TextBlock Text="Password"/

TextBox Name="TbxPassword"/

Button Height="20"

Margin="5"

Click="Button_Click"

Content="Войти"/

StackPanel

Grid

Page





Обработчики SignInPage.xamls:

Обработчик на кнопку Войти


Разметка ServicesPage.xaml:

Page x:Class="Project1.Views.ServicesPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:local="clr-namespace:Project1.Views"

mc:Ignorable="d"

Loaded="Page_Loaded"

d:DesignHeight="450" d:DesignWidth="800"

Title="ServicesPage"

Grid Background="White"

Grid.RowDefinitions

RowDefinition Height="60"/

RowDefinition/

RowDefinition Height="60"/

Grid.RowDefinitions

Button Height="20"

Margin="10,20,0,20"

MouseLeftButtonUp="Button_Click"

Content="Назад"

HorizontalAlignment="Left"

Width="70"/

ListView Grid.Row="1"

Name="Service_ListView"

ListView.View

GridView

GridViewColumn Header="ID" Width="50" DisplayMemberBinding="{Binding ID}"/

GridViewColumn Header="Навание" Width="200" DisplayMemberBinding="{Binding Title}"/

GridViewColumn Header="Стоимость" Width="100" DisplayMemberBinding="{Binding Cost}"/

GridViewColumn Header="Картинка" Width="100"

GridViewColumn.CellTemplate

DataTemplate

DataTemplate

GridViewColumn.CellTemplate

GridViewColumn

GridView

ListView.View


ListView

StackPanel Grid.Row="2"

HorizontalAlignment="Center"

Orientation="Horizontal"

VerticalAlignment="Center"

Button

Name="Client_Btn"

Height="24"

Margin="10, 0, 0, 0"

Click="Button_Click_3"

Content="Клиенты"

Width="150"

/

StackPanel

Grid

Page

Обработчики ServicesPage.xaml.сs:

Обработчик на кнопку Назад





Обработчик на вывод таблицы Service


Обработчик на кнопку Клиенты

Разметка DataPage.xaml:

Page x:Class="Project1.Views.DataPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:local="clr-namespace:Project1.Views"

mc:Ignorable="d"

d:DesignHeight="450" d:DesignWidth="800"

Loaded="Page_Loaded"

Title="DataPage"

Grid Background="White"

Grid.RowDefinitions

RowDefinition Height="60"/

RowDefinition/

RowDefinition Height="60"/

Grid.RowDefinitions

Button Height="20"

Margin="10,20,0,20"

Click="Button_Click"

Content="Назад"

HorizontalAlignment="Left"

Width="70"/

DataGrid Grid.Row="1"

AutoGenerateColumns="False"

Name="UsersGrid"

DataGrid.Columns

DataGridTextColumn Header="ID" Width="30" Binding="{Binding ID}"/

DataGridTextColumn Header="Имя" Width="*" Binding="{Binding FirstName}"/

DataGridTextColumn Header="Фамилия" Width="*" Binding="{Binding LastName}"/

DataGridTextColumn Header="Отчество" Width="*" Binding="{Binding Patronymic}"/

DataGridTextColumn Header="Дата рождения" Width="*" Binding="{Binding Birthday}"/

DataGridTextColumn Header="Email" Width="*" Binding="{Binding Email}"/

DataGrid.Columns

DataGrid

Grid

Page


Обработчики DataPage.xamls:

Обработчик на кнопку Назад

Обработчик на вывод таблицы Client

Проверить работает ли система.

Если зайти через пользователя, то будет выведена таблица и кнопка «Клиенты» не будет

Если через администратор, то будет выведена таблица и кнопка «Клиенты» будет видна.

Контрольные вопросы:

  1. Назовите основные роли в информационной системе?

  2. В чем разница между аутентификацией и авторизацией?