Member 12605293 Ответов: 1

Как сделать управление на основе ролей в ASP.NET без использования аутентификации в web. config


Привет , я хочу сделать аутентификацию на основе ролей на странице входа в систему, не используя без использования аутентификации в файле web.config.Возможно ли это с помощью кодов C#?

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

<pre>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>");

            }
        }


Мой aspx

<pre><form id="form1" runat="server">
        
        <fieldset style="width: 270px; height: 174px; margin-left: 345px">
<legend class="auto-style1">Login</legend> 
<div class='container'>
<asp:Label ID="Name" runat="server" Text="UserName:" CssClass="lbl"/>
<br/>
<asp:TextBox ID="txtUserName" runat="server" ValidationGroup="lgn" Height="22px"/>
<asp:RequiredFieldValidator ID="RV1" runat="server" ValidationGroup="lgn"

                            ControlToValidate="txtUserName" 

                            ErrorMessage="Please Enter User Name" 

                            SetFocusOnError="True" style="color: #FF0000">*
</asp:RequiredFieldValidator><br />
</div>
 
<div class='container'>
<asp:Label ID="lblPwd" runat="server" Text="Password:" CssClass="lbl"/>
<br/>
<asp:TextBox ID="txtPwd" runat="server" TextMode="Password"  ValidationGroup="lgn"

                         CssClass="pwd" Height="22px"/>
<asp:RequiredFieldValidator ID="RV2" runat="server" 

                            ControlToValidate="txtPwd"

     ValidationGroup="lgn" 

                            ErrorMessage="Your Password" 

                            SetFocusOnError="True" style="color: #FF0000">*
</asp:RequiredFieldValidator><br />
</div>
            <tr>
                <td style="width: 360px"></td>

                <td>
                    <asp:Button ID="btlogin" runat="server" Text="Login"  ValidationGroup="lgn" OnClick="btlogin_Click" />
                    <asp:Button ID="btnsp" runat="server" Text="SignUp" OnClick="btnsp_Click" />

                </td>

            </tr>
        
    </form>


<pre>The below are the ids of the pages::

              
            

                 <a id="menu1" href="Default.aspx">Home</a>
                <a id="menu2" href="Add%20User.aspx">Add User</a>
                <a id="menu3" href="Registrationpage.aspx">Register Employee</a>
                <a id="menu4" href="Contact.aspx">Contact</a>

1 Ответов

Рейтинг:
1

Karthik_Mahalingam

Пользователь имеет возможность ввести "Default.aspx"url-адрес непосредственно в адресной строке браузера, делая это, безопасность терпит неудачу.
Чтобы избежать этой ситуации, вам придется хранить аутентифицированный ключ в сеансе и использовать его через метод загрузки страницы всех страниц для проверки.

Страница входа

da.Fill(dt);
             Session["isValidUser"] ="0";
            if (dt.Rows.Count > 0)
            {
                Session["isValidUser"] ="1";
                Response.Redirect("Default.aspx");
            }


Другая страница:

protected void Page_Load(object sender, EventArgs e)
        {
            if(Session["isValidUser"] !="1")
            {
                Response.Redirect("ErrorPage.aspx");
            }
            // your code....


Member 12605293

Привет Картик
Спасибо за быстрый ответ.Каковы значения 0 и 1. Надеюсь, что это идентификаторы администратора и пользователя,и я хочу,чтобы другой пользователь получил доступ к страницам Default и Contact.aspx, поэтому используйте (Response.Redirect) будет направлять одну конкретную страницу.Я не хочу показывать другие меню, кроме страниц по умолчанию и контактов.Лучше бы он не входил в мою линейку заголовков

ZurdoDev

Или создайте класс, который наследуется от System.Web.UI.Page, и поместите его туда, а затем пусть все ваши веб-страницы наследуются от него.