Kirish web-formasini yaratish
Biz foydalanuvchilarga GameStore dasturida foydalanuvchi nomi va parol yordamida amalga oshiriladigan autentifikatsiya qilish imkoniyatini berishimiz kerak. Pages papkasida Login.aspx nomli yangi web-forma yaratdik. Ushbu web-forma uchun Web Form Using Master Page shabloni tanlangan va master-sahifani \ Pages \ Admin \ Admin.Master-ni ko'rsatilgan. Login.aspx Web-fromaning kodi quyida keltirilgan:
HTML
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="GameStore.Pages.Login"
MasterPageFile="~/Pages/Admin/Admin.Master" %>
Kirish sahifasi sifatida ishlatiladigan web-forma himoyalangan papkadan tashqarida yaratilganligiga e'tibor bering. Bu autentifikatsiya jarayonini sozlash va boshqarishni papkada joylashgan fayllardan bittasidan boshqasini himoyalashga qaraganda ancha osonlashtiradi.
Yaratilgan veb-shakl juda sodda bo'lib, foydalanuvchi nomi va parolini kiritish uchun kirish elementlarini hamda serverga formani yuborish uchun "Kirish" tugmachasini o'z ichiga oladi. Modellarga kirish xato xabarlarini osongina namoyish qilishimiz uchun biz ValidationSummary boshqaruvini qo'shdik. Quyidagi misolda forma yuborishni boshqaradigan \ Pages \ Login.aspx.cs fayl kodi ko'rsatilgan:
C#
using System;
using System.Web.Security;
namespace GameStore.Pages
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string name = Request.Form["name"];
string password = Request.Form["password"];
if (name != null && password != null
&& FormsAuthentication.Authenticate(name, password))
{
FormsAuthentication.SetAuthCookie(name, false);
Response.Redirect(Request["ReturnUrl"] ?? "/");
}
else
{
ModelState.AddModelError("fail", "Логин или пароль не правильны." +
"Пожалуйста введите данные заново");
}
}
}
}
}
Request.Form to'plami foydalanuvchi tomonidan nom va parol uchun kiritilgan qiymatlarni olish uchun ishlatiladi va tasdiqlash FormsAuthentication.Authenticate () usuli yordamida tekshiriladi.
Agar siz ushbu misolni Visual Studio-da takrorlasangiz, FormsAuthentication.Authenticate () usuli bekor qilinganligi haqida ogohlantirish olasiz. Bu haqda tashvishlanmang - bizga oddiy autentifikatsiya tizimi kerak. Murakkab autentifikatsiya tizimi bu Membership API.
Agar Authenticate () usuli TRUE qiymatini qaytarsa, biz SetAuthCookie () usulini foydalanuvchiga keyingi autentifikatsiyani talab qilmasdan keyingi so'rovlarni yuborishiga imkon beradigan cookie-fayllar to'plamini qo'shish uchun chaqiramiz. (SetAuthCookie () usuli ikkinchi argumentda FALSE qiymati beriladi, ya'ni autentifikatsiya faqat foydalanuvchi seansi davomida amal qiladi - bu sinov paytida ayniqsa foydalidir, chunki har qanday tasdiqlangan seansni qayta boshlash orqali bekor qilishingiz mumkin.) Cookie-fayl yaratilgandan so'ng, foydalanuvchini ReturnUrl xususiyati tomonidan taqdim etilgan URL manziliga yo'naltirish uchun Response.Redirect () usulini chaqiramiz. Autentifikatsiya zarur bo'lganda, bu ASP.NET Framework tomonidan o'rnatiladi - qisqa vaqt ichida qanday ishlashini ko'rib chiqamiz
Agar Authenticate () usuli false qiymatini qaytarsa, demak foydalanuvchi noto'g'ri hisob ma'lumotlarini taqdim etgan. Ushbu vaziyatni ModelSate.AddModelError () usulini chaqirish orqali hal qilamiz, bu javobga web-forma ichida aniqlangan ValidationSummary boshqaruvida ko'rsatiladigan xabarni qo'shadi.
Autentifikatsiyada hatolik bo'lgan vaziyatni sinovdan o'kazish.
Biz ASP.NET Framework-ni tasdiqlash uchun hech qanday maxsus hisobga olish ma'lumotlarini aniqlamadik, shuning uchun har qanday autentifikatsiya urinishlari muvaffaqiyatsiz bo'ladi. autentifikatsiya konfiguratsiyasini qanday ishlashini ko'rish uchun dasturni ishga tushiring. Agar siz / admin / orders yoki admin / games kabi URL manziliga kirsangiz, siz Login.aspx web-formasiga yo'naltirilasiz, bu sizning foydalanuvchi nomingiz va parolingizni kiritishingizni talab qiladi. Kirish tugmachasini bosish quyidagi rasmda ko'rsatilgandek formani yuboradi va xato haqida xabar beradi:
Agar brauzer yo'naltirilgan URL ga qarasangiz, dastlab so'ralgan URL so'rovlar qatoriga kiritilganligini ko'rasiz. Shuningdek, ushbu URL manzil sxemasiga mos kelmasligini sezasiz. ASP.NET Framework-ning autentifikatsiya qilish va avtorizatsiya qilish uchun o'rnatilgan qo'llab-quvvatlashi nisbatan so'nggi marshrutlash mexanizmi bilan yaxshi ishlamaydi.
Autentifikatsiya va avtorizatsiya muvaffaqiyatli bo'lganligini sinovdan o'tkazish
Biz Web.config faylida hisobga olish ma'lumotlarini aniqlaymiz. Ushbu yondashuv hech qachon haqiqiy loyihada qo'llanilmaydi, chunki u juda yomon masshtablashgan ega va foydalanuvchilarga ma'lumotlarini o'zgartirishga imkon bermaydi. Biroq, GameStore namunaviy dasturida biz avtorizatsiya qanday ishlashini namoyish qilish uchun faqat bitta foydalanuvchi uchun hisobga olish ma'lumotlariga muhtojmiz va ularni Web.config faylida sozlash eng osonidir. Quyidagi misolda authentication elementiga kiritilgan qo'shimchalar ko'rsatilgan:
XML
Biz admin nomli va paroli 123456 foydalanuvchi yaratdik. Muvaffaqiyatli autentifikatsiya va avtorizatsiya natijalarini sinab ko'rish uchun dasturni ishga tushirish va / admin / order kabi URL manziliga o'tish kerak. Shaxsiy ma'lumotlari yana so'raladi va agar to'g'ri kiritilgan bo'lsa, u so'ralgan sahifaga yo'naltiriladi.
Do'stlaringiz bilan baham: |