MVC4 自定义消息响应的范围Attribute,怎么在响应中输出文本

当应用程时所使用的机器和发布 MVC蝂本的更新出现了HandleErrorAttribute,使用Filter以AOP的思想实现了针对于Action的异常处理使用此Filter后,当程序中出现异常的时候会去封装这些异常信息,然后路由洎动转到该Controller对应的Error.cshtml中如果此路径下没有改文件,则会到shared目录中寻找此文件另外一个相关的是在Global.asax中的protected

如果遇到异常后不单单是要自定义消息响应的范围异常显示,而且还需要进行日志记录此时,可以通过继承扩展HandleErrorAttribute来实现新的Filter,然后在lobal.ascx中对所有的Action进行注册filters.Add(new

}当出现异常的时候,把异常抛到最顶端由Application_Error统一处理。这里的统一处理就包括记录日志,重新进行页面定向等

昨天做了一个例子是在Mvc4下,对於不同的用户角色(Roles)可以访问不同的页面。根据MVC3中的方式只需要在相应的Controller上添加上类似于[Authorize(Roles="Admin")]这样的描述就行。后来通过测试发现如果单独使用[Authorize]或者使用[Authorize(User="xxx")]都是可以的,但是一旦使用[Authorize(Roles="xxx")]就会报数据库连接错误:在 定位指定的服务器/实例时出错)。在网上查了好多资料都无法解决,后来我决定自定义消息响应的范围AuthorizeAttribute

首先,应该定义角色以及用户和角色的对应关系:

其次,在登录的时候就应该把用户的組信息写到验证Cookie中去。


第四步:将自定义消息响应的范围的属性描述加在需要访问的Controller或Action上

当我们以admin用户登录,访问http://localhost:8090/MusicStore时由于admin用户既属于Admin組,也属于PowerManager组所以可以访问。如果以gqq登录由于gqq属于Admin组,因此也可以访问该链接(属于Admin、PowerManager中的任意一个组即可)如果以test用户登录,则該链接不可以访问(根据上文代码,test属于Guest组

我要回帖

更多关于 自定义消息响应的范围 的文章

 

随机推荐