自定义ASP中的CustomAuthenticationAttribute依赖参数.净MVC



如何在ASP中为操作创建CustomAuthenticationAttribute。NET MVC 5依赖参数,我的意思是,如果我发送到模块5,它意味着获取数据相关的老师,如果我发送3作为参数到模块,返回学生。我想添加两个权限(学生和教师),允许用户访问学生或教师或两者。

[CustomAuthentication(PermissionCode = "Student_View")]
public ActionResult Index(int module)
{
}

我有问题,因为CustomAuthentication相关的页面代码(我将添加两段代码)student_View和teacher_View

我相信你仍然可以使用AuthorizationContext中传递的操作参数,这取决于你的属性是如何设置的,做类似的事情。我从AuthorizeAttribute继承,但这应该适用于其他类型的属性,只要你可以访问Request对象。

您还可以通过将"module"属性名称传递给属性来使其动态化:

public class CustomAuthenticationAttribute : AuthorizeAttribute {
public string ParamName { get; set; }
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
if (!string.IsNullOrEmpty(ParamName)) {
if (filterContext.RequestContext.HttpContext.Request.QueryString[ParamName] != null) { // If using GET
int module = int.Parse(filterContext.RequestContext.HttpContext.Request.QueryString[ParamName]);
// Do something with module
} else if (filterContext.RequestContext.HttpContext.Request.Form[ParamName] != null) { // If using POST (I have not tested Form before myself)
int module = int.Parse(filterContext.RequestContext.HttpContext.Request.Form[ParamName]);
// Do something with module
}
}
}
}

然后你可以这样使用:

[CustomAuthentication(ParamName = "module")]
public ActionResult Index(int module) { }

最新更新