Asp.net Сообщение о правильной авторизации

#asp.net #web-config #forms-authentication

#asp.net #web-config #формы -аутентификация

Вопрос:

Это мои настройки в web.config :

 <location path="Salary.aspx"> 
    <system.web> 
        <authorization>
            <allow roles="Salary Admin" /> 
            <deny users="*"/> 
        </authorization>
    </system.web> 
</location>
  

В web.config это работает отлично, но я хочу отобразить соответствующее сообщение пользователю о том, что он не авторизован, и дать ссылку для возврата. Вместо этого оно переходит непосредственно в форму входа, как я могу это решить? Мы будем признательны за любую помощь.

код btnlogin

 protected void btnLogin_Click(object sender, EventArgs e)
        {
            bool bCheckUser;
            try
            {
               if ((txtUserName.Text == "") || (txtPassword.Text == ""))
                {
                    lblError.Visible = true;
                    lblError.ForeColor = System.Drawing.Color.Red;
                    lblError.Text = "Enter UserName and Password";
                }


                    {
                        bCheckUser = Membership.ValidateUser(txtUserName.Text, txtPassword.Text);
                        FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, true);
                          FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text);
                        if (bCheckUser == true)
                        {
                            lblError.Visible = false;
                            Response.Redirect("MainMenu.aspx");
                        }
                        else
                        {
                            lblError.Visible = true;
                            lblError.ForeColor = System.Drawing.Color.Red;
                            lblError.Text = "You Username or Password is Invalid. Please try Again";
                        }

                }

            }
            catch(Exception ex)
            {
                lblError.Text = ex.Message.ToString();
            }
        }
  

при загрузке

   protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Page.User.Identity.IsAuthenticated amp;amp; !string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))                   
                    Response.Redirect("Unauthorized.aspx");
            }

        }
  

каждый раз, когда он выдает Page.User.Идентификация.Аутентифицируется как false, если при запуске я перехожу с одной страницы на другую, выдается значение true, затем возвращается значение false.

Комментарии:

1. я получил что-то вроде этой формы Stackoverflow сам по себе .. защищенное переопределение void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (!filterContext.HttpContext.User. Идентификация. Аутентифицировано) { база. HandleUnauthorizedRequest(filterContext); } else { filterContext.Result = new ViewResult { ViewName = «Доступ запрещен» }; } } но это тоже не слишком работает

2. Почему бы не поместить эту информацию на страницу входа, когда она перенаправляется?

3. Проверьте это: weblogs.asp.net/gurusarkar/archive/2010/01/12/… К вашему сведению: используйте edit для добавления деталей к вашему вопросу вместо добавления его в качестве комментария.

4. да, я видел это .. это тоже не работает

5. Я предполагаю, что вы говорите о asp.net mvc?

Ответ №1:

лучше создайте поле в вашей таблице типа user_type и измените функцию, которая проверяет подлинность части входа в систему, как

    if(user_type.ToString()=="admin")
       {
             //do other authentication stuff
       }
   else
       {
             Response.Redirect("urerrorpage.aspx");
       }
  

Ответ №2:

 <location path="Salary.aspx"> 
    <system.web> 
        <authorization>
            <allow roles="Salary,Admin" /> 
            <deny users="*"/> 
        </authorization>
    </system.web> 
</location>
there should be comma in allow roles tag