וובמאסטר - תיכנות ובניית אתרים

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

IdoFlatow ,‏ מכללת סלע‏ ‏/‏ 9 פברואר, 2011
F+
F-

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

הכנה

על-מנת לעבוד עם הרשאות, נצטרך להגדיר את ה-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 xmlns
="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)
תגיות: מדריך‏  /  צד שרת‏  /  פיתוח‏  /  ASP.NET‏  /  .net‏  

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

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות