首页 新闻 会员 周边

MVC的HttpContext.User问题

0
悬赏园豆:10 [已解决问题] 解决于 2011-09-15 17:14

IIdentity id = HttpContext.User.Identity;
GenericPrincipal MyPrincipal = new GenericPrincipal(id, role);
HttpContext.User = MyPrincipal;

这是登录时的代码,这里的User里的Roles有写进去的角色。

但是在view里

@if(HttpContext.Current.User.IsInRole("管理员"))
{ @HttpContext.Current.User.Identity <br /> <h1>4</h1>}

这是的User里就没有写进去的Roles了,这是因为什么呢??

Rookier的主页 Rookier | 小虾三级 | 园豆:652
提问于:2011-09-13 12:02
< >
分享
最佳答案
0

记得GenericPrincipal的IsInRole方法永远返回false的,还是去拿Roles属性再判断吧……

收获园豆:5
Gray Zhang | 专家六级 |园豆:17610 | 2011-09-13 13:15

But 我这里的IsinRole进不去下面的,也就是说返回的是false。。

Rookier | 园豆:652 (小虾三级) | 2011-09-13 13:38

@小小白白:我用网上的例子试了,isinrole方法能返回ture的。

Rookier | 园豆:652 (小虾三级) | 2011-09-13 17:37
其他回答(1)
0

你的user,role之类的都是继承自微软那一套东西吗?一般情况你用那一套东西是需要你重写的。

收获园豆:5
顾晓北 | 园豆:10844 (专家六级) | 2011-09-13 17:25

control里的代码已经获取到了roles了,问题就是在view里有user.identity.name是control里的值,roles没获取到。

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2011-09-13 17:38

@小小白白: 你没明白我的意思,我的意思是说既然你role和user都是自己的数据了,那你的user.isinrole呢?

比如说有一个用户名叫a,微软的那一套东西会根据a这个用户的id判断a这个用户是否是角色b呢?

他有一个角色用户的关系表,判断这两个有没有对应关系,你看看你是怎么写的吧。

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-09-14 10:04

httpContext.current在不同的httpRequest   中是变化的 
也就是说用httpConext.current.items来保存的数据是不能跨页面传递的。

写在Globa就解决问题了。

支持(0) 反对(0) Rookier | 园豆:652 (小虾三级) | 2011-09-14 17:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册