AuthorizeAttribute не работает при обновлении страницы - PullRequest
0 голосов
/ 18 октября 2019

У меня есть некоторые проблемы с авторизацией:

Коды AuthorizeWebForm работают при загрузке страницы, я не в группе администраторов, поэтому у меня нет доступа, и это здорово. Но когда я обновляю страницу, у меня появляется доступ к странице, и код AuthorizeWebFormAttribute не запускается при обновлении. Любое решение для этого?

 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeWebFormAttribute : System.Attribute
{
    public AuthorizeWebFormAttribute(string Roles = null)
    {
        IPrincipal user = HttpContext.Current.User;
        if (user.Identity.IsAuthenticated)
        {
            if (Roles == null)
                return;

            if (user.IsInRole("admin"))
                return;

            string[] roleArray = Roles.Split(',');
            foreach (var role in roleArray)
            {
                if (user.IsInRole(role))
                    return;
            }
        }
        HttpContext.Current.Server.TransferRequest("~/Unauthorized", false);
    }
}

namespace Crew
{
    [AuthorizeWebForm("admin")]
    protected void Page_Load(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(Session["EmpNo_User"].ToString()))
        {
            Response.Redirect("~/ErrorPage.aspx?CustError=This page expired. Please close the broswer and open again.");
        }
        Page.MaintainScrollPositionOnPostBack = true;
    }

}

Большое спасибо!

1 Ответ

0 голосов
/ 18 октября 2019

Вы изобретаете колесо здесь. Существует совершенно хороший класс AuthorizeAttribute, который вы можете использовать: https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.authorizeattribute?view=aspnet-mvc-5.2

Также обратите внимание на https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/roles/role-based-authorization-cs для обеспечения безопасности на основе ролей в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...