我想为每个页面的属性使用授权。例如,我有CardOperation
页,我希望只有管理员可以使用此页
我创建了AuthorizeRolesAttribute
如下
[AttributeUsage(AttributeTargets.Class)]
public class AuthorizeRolesAttribute : Attribute
{
public AuthorizeRolesAttribute(params UserRole[] roles)
{
if (!roles.Contains(UserSession.User.Role))
{
UserSession.MessageTypeId = Enums.SystemMessageType.Unauthorized;
HttpContext.Current.Response.Redirect("Message.aspx", false);
}
}
}
我想用作
[AuthorizeRoles(UserRole.Administrator)]
public partial class CardOperation : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
...
以这种方式存在两个问题。首先,该属性的构造函数在Page_Load
之后起作用。第二个问题是此属性的构造函数在第一个请求时间起作用,但随后(第二个请求)不起作用。
如何解决这个问题呢?这样在ASP.NET Web表单中最适合授权吗?