مدیریت نقشهای کاربری (User Role Management) یکی از ویژگیهای کلیدی در برنامههای کاربردی وب است که به شما این امکان را میدهد تا دسترسی کاربران به بخشهای مختلف سیستم را کنترل کنید. در این راهنما، نحوه پیادهسازی مدیریت نقشهای کاربری با استفاده از ASP.NET Web Forms را بررسی خواهیم کرد.
### ۱. طراحی پایگاه داده
ابتدا باید جدولهایی برای ذخیره اطلاعات کاربران و نقشهای آنها ایجاد کنید. میتوان از جدولهای زیر استفاده کرد:
#### جدول Users
- **UserID** (int, کلید اصلی، شناسایی خودکار)
- **Username** (nvarchar(50))
- **PasswordHash** (nvarchar(255))
- **Email** (nvarchar(100))
#### جدول Roles
- **RoleID** (int, کلید اصلی، شناسایی خودکار)
- **RoleName** (nvarchar(50))
#### جدول UserRoles
- **UserRoleID** (int, کلید اصلی، شناسایی خودکار)
- **UserID** (int, کلید خارجی به جدول Users)
- **RoleID** (int, کلید خارجی به جدول Roles)
### ۲. طراحی صفحات وب
#### ۲.۱. صفحه ورود
صفحه **Login.aspx** را برای ورود کاربران ایجاد کنید:
```asp
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="YourNamespace.Login" %>
Login
```
### ۳. پیادهسازی منطق ورود
در **Login.aspx.cs**، منطق ورود را پیادهسازی کنید و بررسی کنید که کاربر دارای چه نقشی است:
```csharp
using System;
using System.Data.SqlClient;
namespace YourNamespace
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string username = txtUsername.Text;
string password = txtPassword.Text;
// اعتبارسنجی کاربر و گرفتن نقش
int userId = ValidateUser(username, password);
if (userId > 0)
{
string role = GetUserRole(userId);
Session["Username"] = username;
Session["Role"] = role;
// هدایت به صفحه مربوط به نقش
if (role == "Admin")
{
Response.Redirect("AdminPage.aspx");
}
else
{
Response.Redirect("UserPage.aspx");
}
}
else
{
lblMessage.Text = "Invalid username or password.";
}
}
private int ValidateUser(string username, string password)
{
// اینجا باید منطق بررسی اعتبار کاربر را پیادهسازی کنید (توجه به هش پسورد)
// برای مثال:
using (SqlConnection con = new SqlConnection("your_connection_string"))
{
string query = "SELECT UserID FROM Users WHERE Username = @Username AND PasswordHash = @PasswordHash";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@Username", username);
cmd.Parameters.AddWithValue("@PasswordHash", HashPassword(password)); // تابع هش کردن
con.Open();
return (int)cmd.ExecuteScalar() ?? 0;
}
}
}
private string GetUserRole(int userId)
{
using (SqlConnection con = new SqlConnection("your_connection_string"))
{
string query = "SELECT r.RoleName FROM UserRoles ur INNER JOIN Roles r ON ur.RoleID = r.RoleID WHERE ur.UserID = @UserID";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@UserID", userId);
con.Open();
return cmd.ExecuteScalar()?.ToString() ?? string.Empty;
}
}
}
private string HashPassword(string password)
{
// پیادهسازی متد هش کردن پسورد (مثلاً با استفاده از SHA256)
// ...
return password; // به طور موقت، حتماً این را با هش واقعی جایگزین کنید.
}
}
}
```
### ۴. صفحات مدیریت نقشها
#### ۴.۱. صفحه AdminPage
صفحه **AdminPage.aspx** را برای مدیریت نقشها و کاربران ایجاد کنید:
```asp
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AdminPage.aspx.cs" Inherits="YourNamespace.AdminPage" %>
Admin Page
```
#### ۴.۲. مدیریت نقشها در کد سرور
در **AdminPage.aspx.cs**، کدهای لازم برای مدیریت نقشها را اضافه کنید:
```csharp
using System;
namespace YourNamespace
{
public partial class AdminPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Role"] == null || Session["Role"].ToString() != "Admin")
{
Response.Redirect("Login.aspx"); // هدایت به صفحه ورود اگر کاربر مدیر نباشد
}
}
protected void btnLogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("Login.aspx");
}
}
}
```
### ۵. نمایش صفحه کاربر
صفحه **UserPage.aspx** را برای کاربران عادی ایجاد کنید:
```asp
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserPage.aspx.cs" Inherits="YourNamespace.UserPage" %>
User Page
```
### ۶. مدیریت صفحه کاربر
در **UserPage.aspx.cs**، اطلاعات مربوط به کاربر را نمایش دهید:
```csharp
using System;
namespace YourNamespace
{
public partial class UserPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Username"] != null)
{
lblWelcome.Text = "Welcome, " + Session["Username"].ToString();
}
else
{
Response.Redirect("Login.aspx"); // اگر کاربر وارد نشده باشد، به صفحه ورود هدایت میشود
}
}
protected void btnLogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Response.Redirect("Login.aspx");
}
}
}
```
### نتیجهگیری
با دنبال کردن این مراحل، شما میتوانید یک سیستم مدیریت نقشهای کاربری ساده با استفاده از ASP.NET Web Forms ایجاد کنید. این سیستم به شما امکان میدهد تا کاربران را بر اساس نقشهایشان مدیریت کنید و دسترسیهای مختلفی به آنها بدهید. همچنین میتوانید این سیستم را با ویژگیهای بیشتری گسترش دهید، از جمله مدیریت نقشها، حذف و ویرایش کاربران و غیره.
| صفحه قابل مشاهده:
دانلود کد مدیریت نقشهای کاربری با ASP.NET Web Form میباشد