小白之AuthorizeAttribute权限控制(一)
2018-03-09 17:34
225 查看
web网站一般都需要做访问权限控制,把项目中使用的方式记录一下,也是第一次使用,作为知识积累吧。
项目是基于.NET的EF+MVC 框架,权限控制在Filters中去处理,该文件夹与Controller同级。
大致的流程:
当web请求访问某个被Attribute标记的controller或action时,就会先进入Filters中权限处理层,根据是否处理结果决定是或否有权限访问。一般没有权限时,会重定向到提示没有权限的页面或者登录页面。
现在 先自定义一个FunctionAttribute,继承 Attribute, 用于贴上需要做授权控制的方法上
然后再定义一个 SystemAuthorizeAttribute,继承 AuthorizeAttribute,并重写里面需要用到的方法
权限控制的逻辑代码在OnAuthorization 方法中处理,如果验证不通过,则重定向到指定的页面。
ok,还差最后一步,我们把特性贴在需要用的地方:
在方法上面加的[SystemAuthorize],当被访问时,会先进入SystemAuthorizeAttribute 的 OnAuthorization方法,该方法没有方法值,如果不被重定向到其他页面,也就意味着没有被拦截,就会继续访问Index 方法,然后客户端就看到Home页面啦。
涉及到的知识点还有更多,后面再陆续更新关于权限控制的内容
项目是基于.NET的EF+MVC 框架,权限控制在Filters中去处理,该文件夹与Controller同级。
大致的流程:
当web请求访问某个被Attribute标记的controller或action时,就会先进入Filters中权限处理层,根据是否处理结果决定是或否有权限访问。一般没有权限时,会重定向到提示没有权限的页面或者登录页面。
现在 先自定义一个FunctionAttribute,继承 Attribute, 用于贴上需要做授权控制的方法上
public class FunctionAttribute:Attribute { public FunctionAttribute() { } public FunctionAttribute(string name) { this.Name = name; } public string Module { get; set; } public string Code { get; set; } public string Name { get; set; } public string Message { get; set; } }
然后再定义一个 SystemAuthorizeAttribute,继承 AuthorizeAttribute,并重写里面需要用到的方法
public class SystemAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { { if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { var loginUrl = "/Portal/account/login"; filterContext.Result = new RedirectResult(loginUrl); } } } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { base.HandleUnauthorizedRequest(filterContext); } protected override bool AuthorizeCore(HttpContextBase httpContext) { return base.AuthorizeCore(httpContext); } }
权限控制的逻辑代码在OnAuthorization 方法中处理,如果验证不通过,则重定向到指定的页面。
ok,还差最后一步,我们把特性贴在需要用的地方:
[Function(Module = "客户")] [SystemAuthorize] public ActionResult Index() { return View(); }
在方法上面加的[SystemAuthorize],当被访问时,会先进入SystemAuthorizeAttribute 的 OnAuthorization方法,该方法没有方法值,如果不被重定向到其他页面,也就意味着没有被拦截,就会继续访问Index 方法,然后客户端就看到Home页面啦。
涉及到的知识点还有更多,后面再陆续更新关于权限控制的内容
相关文章推荐
- 用ASP实现分级权限控制
- 使用Struts 拦截namespace进行权限控制
- 我的权限控制(JBX + struts + hibernate + ORACLE)
- javaWeb用户权限控制简单实现
- TP 3.2.3 权限控制源码
- 使用IHttpHandler做权限控制[ASP.NET | IHttpHandler | AjaxPro | UserHostName]
- C++中关于public、protect、private的访问权限控制
- MacOS获取辅助功能权限控制鼠标点击事件
- SharePoint 2010 item级的权限控制
- 简单的权限控制
- 一句话总结,什么是权限控制(即登录控制)、拦截器
- RBAC(基于角色的访问控制权限)表结构
- SharePoint 2010 技巧系列: 控制Ribbon菜单权限(SiteActions的例子)
- Struts2拦截器 实现未登录拦截和权限控制
- web后台根据权限控制按钮显示/隐藏的方案
- AOP下的权限控制实现
- 对数据权限控制的实验
- 反射和注解的妙用——struts2基于方法的权限控制
- 6.访问权限控制
- Java访问控制权限