我读过一篇关于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 回答
我使用派生的
AuthorizeAttribute
来处理基类没有的一些情况 . 代码段中的问题是您没有调用基本功能 . 所以在AuthorizeCore
中你需要调用base.AuthorizeCore(httpContext);
而不是检查httpContext.Request.IsAuthenticated
,除非你想彻底改变这种行为(你的第二个问题) . 也许this example有帮助 .回答你的第一个问题:是的,只要你不从基类覆盖这个功能 .
问题3:据我所知,只要你没有覆盖它,你的派生属性与基本完全相同 . 但究竟是什么意思“传递用户和角色”?