Member 12605293 Ответов: 1

Как я могу добиться ограничения страниц контента для пользователя и администратора в C#


Привет , как я могу добиться ограничения страниц контента для пользователя и администратора в C#.Я сделал все содержимое внутри папки администратора и необходимые страницы внутри папки пользователя, это правильный способ сделать,если не помочь мне с вашими идеями

Что я уже пробовал:

<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Security;
namespace Webapp25
{
    public partial class Loginpage : System.Web.UI.Page
    {
        SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconnection"].ConnectionString);
        protected void Page_Load(object sender, EventArgs e)
        {
            Session["username"] = txtUserName.Text;
            HttpCookie _infoCookie = new HttpCookie("InfoCookie");
            _infoCookie["LoginDate"] = DateTime.Now.ToString();
            Response.Cookies.Add(_infoCookie);
        }
        public void CleartextBoxes(Control parent)
        {

            foreach (Control c in parent.Controls)
            {
                if ((c.GetType() == typeof(TextBox)))
                {

                    ((TextBox)(c)).Text = "";

                }

                if (c.HasControls())
                {
                    CleartextBoxes(c);
                }
            }
        }

        protected void txtusername_TextChanged(object sender, EventArgs e)
        {

        }

        protected void btlogin_Click(object sender, EventArgs e)
        {
            cn.Open();
            SqlCommand cmd = new SqlCommand("Select * from Adduser where Username =@username and Password=@password", cn);
            cmd.Parameters.AddWithValue("@username", txtUserName.Text);
            cmd.Parameters.AddWithValue("@password", txtPwd.Text);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {

                Response.Redirect("Default.aspx");
            }
            else
            {
                ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");

            }
            CleartextBoxes(this);
            if (System.Web.Security.Roles.IsUserInRole(txtUserName.Text, "ADMIN"))
    {
              Response.Redirect("~/ADMIN/");
    }    
            
            else
            {
                Response.Redirect("");
            }
        }

        protected void btnsp_Click(object sender, EventArgs e)
        {
            Response.Redirect("Signup.aspx");
        }
       
        }

1 Ответов

Рейтинг:
1

Vincent Maverick Durano

Есть много примеров, которые демонстрируют это в интернете. Просто погуглите этот термин "asp.net ролевая авторизация". Вот один пример, который я нашел: Ролевая авторизация (C#) | The ASP.NET сайт[^]


Member 12605293

Привет Винсент
Спасибо за Ваш быстрый ответ,Да, я нашел много решений, как вы сказали, но я хочу, чтобы это было сделано в кодировании C# (что было сделано в старые времена) внутри события кнопки страницы входа

Vincent Maverick Durano

перенаправление на страницы администратора на основе роли "администратор"должно работать. Но подумайте об этом, как вы предотвращаете несанкционированный доступ, когда кто-то вводит url-адрес непосредственно в браузер? Ну, вы, вероятно, могли бы сделать проверку на каждой странице загрузки каждой страницы, чтобы проверить наличие ролей, но это заноза в заднице. Однако вы можете создать базовый класс, который выполняет проверку ролей, а затем сделать так, чтобы ваша страница наследовала этому базовому классу.

Member 12605293

Привет бро
Я понял твою точку зрения.Я должен сделать это на C#, и вы можете поделиться фрагментом кода, основанным на вашем представлении.Спасибо, что уделили мне время.

Vincent Maverick Durano

Точно так же, как то, что вы сделали в своем логине: например, в page_load ваших страниц администратора вы можете сделать:

    if (!System.Web.Security.Roles.IsUserInRole(userName, "ADMIN"))
    {
              Response.Redirect("~/UnAthorizeAccess.aspx");
    }