我的任务是为我们的 MVC 4.0 项目的方法创建一个自定义成员资格提供程序。
基于属性([Authorize]
?),它必须确定是否允许尝试的用户使用该方法。
目前我有这个:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class TestAuthorize : CodeAccessSecurityAttribute
{
public TestAuthorize(SecurityAction action)
: base(action)
{
}
public override IPermission CreatePermission()
{
throw new NotImplementedException();
}
}
当我添加时,
return new PrincipalPermission(null,null,true)
我希望权限有效并且用户可以访问该方法。
当我添加时,
return new PrincipalPermission(null.null,false)
我希望权限无效,并且用户将被拒绝访问该方法。
但是,它仅在我使用 a 时才停止继续,throw new SecurityException("You are denied access")
这也强制 MVC 应用程序停止,除非在客户端处理此异常(使用 try catch)。
我们有可能在我们的 MVC 项目中处理这个异常吗?
作为我们希望通过使用属性来完成的示例:
[TestAuthorize(SecurityAction.Demand)]
public List<string> GetList()
{
//if access, return new List();
//if no access, return null;
}