1、统一异常处理
某商城采用的异常处理方式,是全局统一捕捉,统一处理
思路:
一、定义异常过滤器
实现 MyExceptionFilter : FilterAttribute,IExceptionFilter,重写OnException方法,
IExceptionFilter会在出现异常的时候调用
二、配置过滤器
注册MyExceptionFilter
使用:
例如:我们在controller 抛的异常即会被MyExceptionFilter 自动捕获。
2、统一身份验证
商城身份验证:
1、可自由配置,针对哪些页面,甚至哪些功能需要进行身份验证
2、全局性,全局功能可以调用同一套身份验证体系。
思路:
1、配置过滤器,并自定义身份校验逻辑
2、代码: 需重写OnAuthorization()方法
3、身份校验
在查看产品明细时,就需要对当前用户的身份进行验证。
3、权限控制
商城权限控制适用场景:
1、可适应单角色控制
2、可适应混合角色控制(用户可能为角色1,同为也可能为角色2)
3、可支持功能扩展
4、权限控制粒度:功能点
原理:MVC中Url的执行是按照Controller->Action->View页面, ASP.NET MVC允许我们创建action过滤器Filter,我们都知道在Action上使用的每一个 [Attribute]大都是自定义的Filter。
mvc提供四种类型的Filter接口:IActionFilter,IAuthorizationFilter,IExceptionFilter,IResultFilter,这四种Filter足以满足我们所要实现的功能,它还提供了几个现
我需要的使用的是IActionFilter.
具体实现:
1、定义一个自定义的Action拦截器,继承ActionFilterAttribute接口
2、重写onActionExecuting方法,该方法 在调用操作方法前调用。在该方法内写自己的权限处理逻辑。
3、定义两个属性:ModuleCode 和 ActionCode ,顾名思义,一个是模块编码,一个是功能点编码
4、比如我要对"取消产品线经理"进行权限控制,此时,每次用户使用这个方法时,都会对用户的权限进行校验后,再
真正执行CancelProductUserRole()方法。
5、过滤器注册
6、自己根据系统实际的业务需求初始化功能点