اخبار، مطالب و رویدادهای مرتبط با توسعه نرم افزار رادکام

ایمن سازی برنامه ها با استفاده از چارچوب نرم افزاری Identity - قسمت ششم - اضافه کردن سیستم احراز هویت به برنامه MVC

اکنون که متد های ورود و خروج را پیاده سازی کردیم و در اختیار داریم، اجازه دهید تغییراتی در رابط کاربری ایجاد کنیم. در نوار هدر بالای صفحه به نام HeaderNavBar.cshtml، که یک partial view است و در پوشه Shared داخل پوشه View قرار دارد، یک ارجاع به فضای نام مربوط به Identity اضافه می‌کنیم. و همچنین باید ارجاعی به فضای نام مربوط به Entity Framework Core اضافه کنیم.
در مرحله بعد، کلاس SignInManager را به این صفحه تزریق می کنیم. اگر کاربر روی لینک پورتال دانشجویی کلیک کند، بررسی می کنیم که آیا کاربر در سایت لاگین کرده است یا خیر و در صورت لاگین بودن، او را به صفحه اصلی دانش آموز هدایت می کنیم.
ما این کار را با استفاده از متد IsSignedIn از کلاس SignInManager انجام می دهیم. و ما این لینک ثابت را با یک Url.Action جایگزین می کنیم. کاربران بعد از لاگین، می توانند اطلاعات محافظت شده را مشاهده کنند، اطلاعاتی مانند نمرات دوره های گذرانده شده خود. اگر آنها احراز هویت نشده اند و در اصل یعنی لاگین نکرده اند، باید آنها را به صفحه ورود هدایت کنیم.
بنابراین ما اینجا هم یک Url.Action را با ورودی های مورد نیازش، که متد login  در  AccountController  است ، جایگزین می کنیم. همچنین یک لینک خروج از سایت به عنوان منو اضافه می کنیم که فقط در صورت لاگین بودن کاربر قابل مشاهده است. بنابراین برای قرار دادن این لینک خروج، ما همین بررسی لاگین بودن را با استفاده از کلاس SignInManager انجام می‌دهیم، و اگر کاربر وارد سیستم شده بود، تگ فرم خود را برای خروج ایجاد می‌کنیم.
Controller ما، AccountController خواهد بود و Action مربوطه نیز،  Action خروج از سیستم  به نام Logout. برای نمایش خروج از سیستم از دکمه از نوع submit استفاده می کنیم و از نظر ظاهری به آن سی اس اس کلاس logout می دهیم. توجه داشته باشید که به چه روشی مجبور شدیم این فرم را پیاده سازی کنیم زیرا action خروج ما فقط HttpPost را می پذیرد.

@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@using Microsoft.AspNetCore.Identity;
@using Microsoft.AspNetCore.Identity.EntityFrameworkCore;


@inject SignInManager<IdentityUser> SignInManager

<h1>Roux Academy of Art and Design<a href="@Url.Action("Index", "Home")" title="home"></a></h1>
<nav id="pageNav" class="cf">
<ul>
<li><a href="programs/programs.htm" title="programs">Programs</a></li>
<li><a href="admissions.htm" title="admissions">Admissions</a></li>

<li>
@if (SignInManager.IsSignedIn(User))
{
<a href="@Url.Action("Index", "Student")" title="student portal">
Student Portal
</a>
}

else
{
<a href="@Url.Action("Login", "Account")" title="login">
Login
</a>
}

</li>
<li><a href="campus_portal.htm" title="campus portal">Campus</a></li>
<li><a href="alumni.htm" title="alumni">Alumni</a></li>
<li><a href="about/about.htm" title="about Roux Academy">About</a></li>
<li>
@if (SignInManager.IsSignedIn(User))
{
<form id="logout" asp-controller="Account" role="form" asp-action="Logout">
<input type="submit" value="Logout" class="logout"/>
</form>
}

</li>
</ul>
</nav> 
آخرین تغییر که از لحاظ UI انجام خواهیم داد در صفحه اصلی دانش آموز است. صفحه اصلی مربوط به بخش دانشجویی را باز کنید، که همان صفحه index در پوشه student است. ما کلمه ثابت "دانشجو" را با نام کاربری دانش آموز وارد شده جایگزین می کنیم.

@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@model IEnumerable<Tutorial.AspNetSecurity.RouxAcademy.Models.Student.CourseGrade>

@{
ViewData["Title"] = "Student Home";
Layout = "_ContentLayout";
}
<fieldset>
<h2>Welcome @User.Identity.Name!</h2><br />
<p><strong><a class="contentlink" href="@Url.Action("AddGrade")">Add Grade</a></strong></p>

@foreach (var grade in Model)
{
<h3>@grade.CourseName</h3>
<p>
Professor: <strong>@grade.ProfessorName</strong><br>
Grade: @grade.Grade%
</p>
}
</fieldset> 

ما مطمئن می شویم که تغییرات ما ذخیره شده است، و در مرحله بعد با ورود به حساب کاربری که به تازگی ثبت نام کرده ایم، آن را آزمایش می کنیم. برنامه را اجرا می کنیم.
بنابراین اکنون وقتی روی منوی پورتال دانشجو کلیک می کنم، صفحه ورود به سیستم ظاهر می شود زیرا در حال حاضر وارد نشده ام. من قصد دارم با استفاده از شناسه کاربری و رمز عبور کاربری که قبلا ایجاد کرده ام وارد سیستم شوم. همانطور که می بینید، ورود با موفقیت انجام شد و من اکنون در صفحه اصلی پورتال دانشجویی هستم. نام کاربری من نیز به درستی نمایش داده می شود. اگر با کلیک بر روی لینک خروج از سیستم خارج شوم، دوباره به صفحه اصلی بازگردانده می شوم.
اکنون که از سیستم خارج شده‌ام، اگر بخواهم به پورتال دانشجویی دسترسی داشته باشم، باید دوباره احراز هویت شوم.

LoggedIn Student Home Page
پست های مرتبط

نام را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید