.Net Web HttpException应用

对于权限控制,微软已经提供了非常成熟的架构模型,并且网上讲解的方案也比较多,这里就不会累赘谈这些解决方案。

如果比如Q空间,公开访问,输入密码,还是允许特定一些身份的人进行访问,可以实现:

1>Global.asax HttpAplication.AuthorizeRequest 事件

2>可以重写MVC中的AuthorizeAttibute(ActionFilter)等

那么如果这样实现,必须要特定的过滤原则(那些页面需要这样实现)以及过滤规则绑定的实现方法。

对于可能出现不同访问规则的验证,这里是在具体的页面初始化过程中进行验证的,比如WebForm的Init 事件和MVC具体的Action进行验证,验证未通过之后状态如何处理?

一、直接输出状态,结束访问:

1 Response.StatusCode = 401;
2 Response.End();

其实这是很不错的方法,但是如果从维护性、拓展性考虑,不建议这么使用。

二、跳转到未授权页面:

1 Response.Redirect(UnAuthorizePage)

这种跳转显得很司空见惯,我常常见到动不动就是跳转,甚至多次见到跳转进入死循环。

三、状态异常HttpException

1 throw new HttpException(401, "UnAuthorize");

在Application_Error()方法或MVC ActionFilterAttibute OnException()中捕获异常,并处理:

 1        HttpContext context = httpApplication.Context;
 2             if (context == null || context.SkipAuthorization)
 3             {
 4                 return;
 5             }
 6             HttpRequest request = context.Request;
 7             HttpResponse response = context.Response;
 8             response.StatusCode = httpException.GetHttpCode();
 9             response.Write(httpException.GetHtmlErrorMessage());
10             httpApplication.CompleteRequest();

这样处理有什么好处?

如果有需要可以统一对这些数据进行分析,也可以此应用中做一些其他的处理,比如三次验证失败,不让再登陆了(锁定状态)。当然这需要更多的代码和更复杂体系结构。

HttpException异常,其他的一些状态也非常适用。

你可能感兴趣的:(exception)