首页 文章

通过创建AuthorizeAttribute的子类来创建自定义Authrization Attribute是否安全

提问于
浏览
0

我读过一篇关于asp.net mvc安全性的文章 . 并且它提到创建自定义授权的更安全的方法是创建AuthorizeAttribute的子类,因为覆盖AuthorizeCore方法,将确保我受益于AuthorizeAttribute内置的功能,我不需要担心细节安全性实施或从头开始创造每件事 . 如下:-

public class CustomAuthAttribute : AuthorizeAttribute {
  private bool localAllowed;
  public CustomAuthAttribute(bool allowedParam) {
  localAllowed = allowedParam;
 }
protected override bool AuthorizeCore(HttpContextBase httpContext)
 {
   if (httpContext.Request.IsLocal) {
    return localAllowed;
  } 
else {
   return true;

假设我将CustomAuth属性而不是defualt [Authorize]属性添加到我的操作方法中 . 所以任何人都可以提出以下建议: -

  • 将根据web.config设置,如果请求未经过身份验证,我的自定义授权属性会将用户重定向到登录页面 . 或者我将失去这个功能 .

  • 是否有必要检查请求是否在自定义授权属性中进行了身份验证,如下所示: -

if(!httpContext.Request.IsAuthenticated)返回false;

或者这是由defualt处理?

  • 我仍然可以使用用户,角色并使用自定义授权属性传递它们 .

有人可以就此提出建议吗?谢谢

1 回答

  • 1

    我使用派生的 AuthorizeAttribute 来处理基类没有的一些情况 . 代码段中的问题是您没有调用基本功能 . 所以在 AuthorizeCore 中你需要调用 base.AuthorizeCore(httpContext); 而不是检查 httpContext.Request.IsAuthenticated ,除非你想彻底改变这种行为(你的第二个问题) . 也许this example有帮助 .

    回答你的第一个问题:是的,只要你不从基类覆盖这个功能 .

    问题3:据我所知,只要你没有覆盖它,你的派生属性与基本完全相同 . 但究竟是什么意思“传递用户和角色”?

相关问题