如何解决ASP.NET MVC 中的自定义 CustomAuthenticationAttribute 依赖参数
我如何为 ASP.NET MVC 5 中的动作创建 CustomAuthenticationAttribute
依赖参数,我的意思是如果我发送到模块 5,这意味着获取数据相关的老师,如果我发送 3 作为模块中的参数,回学生。我想添加两个权限(学生和教师)以允许用户访问学生或教师或两者。
[CustomAuthentication(PermissionCode = "Student_View")]
public ActionResult Index(int module)
{
}
我有问题,因为 CustomAuthentication
相关页面代码(我将添加两段代码)student_View 和 Teacher_View
解决方法
我相信您仍然可以使用传入的 AuthorizationContext
访问操作参数,具体取决于您的属性设置方式,执行类似于 this 的操作。我是从 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) { }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。