我读过一篇关于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) return false;
或者这是由defualt处理的?
有人可以就此提出建议吗? 感谢
答案 0 :(得分:1)
我也使用派生的AuthorizeAttribute
来处理基类没有的某些情况。代码段中的问题是您没有调用基本功能。因此,在AuthorizeCore
中,您需要致电base.AuthorizeCore(httpContext);
而不是检查httpContext.Request.IsAuthenticated
,除非您想彻底改变此行为(您的第二个问题)。也许this example有帮助。
回答您的第一个问题:是的,只要您不从基类覆盖此功能。
问题3:据我所知,只要你不重写它,你的派生属性就和基数完全相同。但是,对于“传递用户和角色”,您究竟是什么意思?