آنچه مسلم است، ما باید اطلاعات متفاوتی به کاربران شناسایی شده و کاربران ناشناس نمایش دهیم. علاوه بر این اغلب اوقات ما نیاز داریم که مشخصات کاربر شناسایی شده را بدانیم.
اجازه دهید برای شرح دادن این شیوه صفحه Default.aspx را تکمیل کنیم. در صفحه Default.aspx دو کنترل Panel اضافه کنید؛ یکی به نام AuthenticatedMessagePanel و دیگری به نام AnonymousMessagePanel. یک کنترل Lable به نام WelcomeBackMessage در داخل Panel اول اضافه کنید. در داخل Panel دوم یک کنترل Hyperlink اضافه کنید و مشخصه Text آن را به Log In و مشخصه NavigateUrl آن را به ~/Login.aspx تغییر دهید. در این حالت کدهای صفحه Default.aspx باید به صورت زیر باشد:
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:Panel runat="server" ID="AuthenticatedMessagePanel">
<asp:Label runat="server" ID="WelcomeBackMessage"></asp:Label>
</asp:Panel>
<asp:Panel runat="Server" ID="AnonymousMessagePanel">
<asp:HyperLink runat="server" ID="lnkLogin" Text="Log In" NavigateUrl="~/Login.aspx"></asp:HyperLink>
</asp:Panel>
</asp:Content>
مشخصه Request.IsAuthenticated یک مقدار بولی که تعیین میکند درخواست احراز هویت شده است یا نه، را برمیگرداند.
کدهای زیر را در رویداد Page_Load بنویسید:
protected void Page_Load(object sender, EventArgs e)
{
if(Request.IsAuthenticated)
{
WelcomeBackMessage.Text = "Welcome back!";
AuthenticatedMessagePanel.Visible = true;
AnonymousMessagePanel.Visible = false;
}
else
{
AuthenticatedMessagePanel.Visible = false;
AnonymousMessagePanel.Visible = true;
}
}
با فرض اینکه شما هنوز وارد سایت نشدهاید، با اجرای صفحه Default.aspx یک پیوند به صفحه Login میبینید (شکل زیر).
با استفاده از مشخصه User شیء Httpcontext میتوانیم کاربر جاری را شناسایی کنیم. شیء Httpcontext اطلاعاتی در مورد درخواست جاری نمایش میدهد. همچنین این شیء مکانی برای اشیاء عمومیASP.NET مانند Response، Request و Session و غیره میباشد.
مشخصه User به وسیله FormsAuthenticationModule تنظیم میشود. به ویژه، هنگامی که FormsAuthenticationModule یک برچسب احراز هویت فرمها در داخل درخواست وارد شده پیدا میکند، یک شیء جدید از GenericPrincipal ایجاد و آن را به مشخصه User نسبت میدهد.
اشیاء Principal (مانند GenericPrincipal) اطلاعاتی درباره مشخصات کاربر و نقشی که به آن تعلق دارند را تهیه میکنند. برای واسط IPrincipal دو عضو تعریف گردیده است:
· IsInRole(roleName): یک متد است که یک مقدار بولی که نشان میدهد که Principal متعلق به نقش مشخص شده هست یا نه، را برمیگرداند.
· Identity: یک مشخصه است که یک شیء که رابط IIdentity را پیاده سازی میکند را برمیگرداند. برای IIdentity سه مشخصه تعریف شده است: AuthenticationType، IsAuthenticated و Name.
ما با استفاده از کد زیر میتوانیم نام بازدید کننده جاری را به دست آوریم:
string currentUserName = User.Identity.Name;
وقتی از احراز هویت فرمها استفاده میشود یک شیء FormsIdentity برای مشخصه GenericPrincipal’s Identity ایجاد میشود. کلاس FormsIdentity همیشه برای مشخصه AuthenticationType رشته "Forms" و برای مشخصه IsAuthenticated مقدار true را برمیگرداند. مشخصه Name نام کاربری که هنگام ایجاد برچسب احراز هویت فرمها مشخص شده است را برمیگرداند.
حالا صفحه Default.aspx را طوری تغییر میدهیم که جمله خوش آمدگویی شامل نام کاربر نیز باشد. بدین منظور کد زیر را در رویداد Page_Load قرار میدهیم:
WelcomeBackMessage.Text = "Welcome back, " + User.Identity.Name + "!";
عالی بود