מדריך ASP.NET – אבטחה: בדיקת הרשאות בקוד

‏ • Sela

במדריך זה נראה כיצד אנחנו בודקים הרשאות של משתמש בקוד.

הכנה

על-מנת לעבוד עם הרשאות, נצטרך להגדיר את ה-Membership Provider כפי שמוסבר במאמר  מדריך ASP.NET – אבטחה: הגדרת משתמשים וקבוצות.

נוסיף למערכת שלנו דרך כלי הניהול Role בשם Admin, כפי שמוסבר במאמר מדריך ASP.NET – אבטחה: הגדרת משתמשים וקבוצות.

נוסיף דף למערכת שלנו ונקרא לו PermissionCheck.aspx. נוסיף לדף הזה שני Labels, לראשונה נקרא lblIsAuthenticated ולשני נקרא lblIsAdmin.

הכיתוב של הדף יהיה כך:

<%@ Page Language="C#" AutoEventWireup="true" 
  CodeBehind="PermissionCheck.aspx.cs"
  Inherits="Demos.PermissionCheck" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html >="http://www.w3.org/1999/xhtml">
<
head id="Head1" runat="server">
  <title></title
>
</
head
>
<
body>
  <form id="form1" runat="server">
  <div>
    <asp:Label runat="server" ID="lblIsAuthenticated" />
    <br />
    <asp:Label runat="server" ID="lblIsAdmin" />
  </div>
  </form
>
</
body
>
</
html
>

בדיקה האם המשתמש מחובר

הקוד הבא בודק האם המשתמש מחובר:

bool isAuthenticated = Page.User.Identity.IsAuthenticated;

בדיקה האם המשתמש הוא ב – Admin Role

הקוד הבא בודק האם המשתמש הוא ב – Admin Role

bool isAdmin = Page.User.IsInRole("Admin");

שיקוף התוצאות בדף

נכתוב ב – Labels את תוצאות הבדיקות. ניקח את שני המשתנים הבוליאנים ולפיהם נקבע מהו הטקסט שיהיה ב – Labels.

if (isAdmin)
  lblIsAdmin.Text = "User is admin";
else
  lblIsAdmin.Text = "User is not admin";

if (isAuthenticated)
  lblIsAuthenticated.Text = "User is authenticated";
else
  lblIsAuthenticated.Text = "User is not authenticated"

נציג כעת את הקוד במלואו.

public partial class PermissionCheck : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    bool isAuthenticated = Page.User.Identity.IsAuthenticated;
    bool isAdmin = Page.User.IsInRole("Admin");

    if (isAdmin)
      lblIsAdmin.Text = "User is admin";
    else
      lblIsAdmin.Text = "User is not admin";

    if (isAuthenticated)
      lblIsAuthenticated.Text = "User is authenticated";
    else
      lblIsAuthenticated.Text = "User is not authenticated";
  }
}

עבור משתמש שאינו מחובר יתקבל המסך הבא:

ASPNET - משתמש לא מורשה

עבור משתמש מחובר שאינו Admin יתקבל המסך הבא:

ASPNET - משתמש מורשה שאינו Admin

עבור משתמש Admin יתקבל המסך הבא:

ASPNET - משתמש Admin

תגיות: , , , ,

IdoFlatow

יועץ ומרצה בקבוצת סלע לתחומי Web ו-Data. עוסק בתחומים Asp.Net, WCF, Silverlight, IIS ו-Entity Framework.כותב הקורס הרשמי של מיקרוסופט ל-WCF וכן שותף בכתיבת הספר ASP.NET Programmer's Reference (ISBN 978-0470505458)

תגובות בפייסבוק