首页 新闻 会员 周边

菜鸟问题:Controller中的User属性如何使用

0
[已解决问题] 解决于 2012-05-22 14:49

我是使用项目创建时自动生成的Forms身份验证,即使用SqlExpress服务。

我想在Controller中获取当前登录用户的登录名,但是使用User.Identity.Name时,User为null,运行时发生异常。

请教高手!

问题补充:

    在View中使用Page.User.Identity.Name可以获取!!

    找到原因:我是在Controller的构造函数中使用User属性的。

    经调试发现,在最终的控制器实例化之前,基类的User,Session,Request,Response等属性皆为null。显然,是Mvc Framework在进行IOC(即依赖注入)。所以,在实例方法中即可使用上述属性。

    但我确实想在实例化之前使用。因为我使用一个中间类继承Mvc Controller基类,再让其他控制器继承此中间类,目的是想传入母版页的公共数据。但我要根据用户角色生成相应的菜单,还真麻烦!!

hardersen的主页 hardersen | 菜鸟二级 | 园豆:206
提问于:2011-06-06 19:04
< >
分享
最佳答案
0
奖励园豆:5
2012 | 高人七级 |园豆:21230 | 2011-06-08 17:31
太感谢了,可惜全是英文的,不过代码还是看懂了。 最后使用System.Threading.Thread.CurrentPrincipal解决问题了。 不过不知是否安全
hardersen | 园豆:206 (菜鸟二级) | 2011-06-08 21:27
安全是没有问题的,其他方法最后的实质也是这个过程,因为每个请求是在独立的线程中完成的,因此线程的上下文肯定是可以的
2012 | 园豆:21230 (高人七级) | 2011-06-09 08:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册