定义了Web应用为表单验证,允许访问所有的页面,然后由页面来实现真正的验证,方案如下:
1、给需要验证的controller或action配置自定义的action filter特性
2、在filter特性中针对OnExected和OnExecuting两个方法进行编程,发现:
无论在哪个地方,通过form验证系统获取当前登录用户都是失败的,而只有在action里来调用才是有效的。
3、修改使用基类controller,在基类中重写OnExecuted和OnExecuting两个方法,现象相同。
不知各位有什么高招。
OnAuthorize这个里面写验证,还有,就说获取失败,你可以单独看执行顺序。
OnAuthorize应该是MVC自带的授权过滤器吧,你可以自己写成自定义过滤器啊。完全自定义,不要用原来的。
问题解决了,原来是:在System.WebServer节点里有一个移除Form授权的配置:
<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="FormsAuthentication" /> </modules> </system.webServer>