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了,这是因为什么呢??
记得GenericPrincipal的IsInRole方法永远返回false的,还是去拿Roles属性再判断吧……
But 我这里的IsinRole进不去下面的,也就是说返回的是false。。
@小小白白:我用网上的例子试了,isinrole方法能返回ture的。
你的user,role之类的都是继承自微软那一套东西吗?一般情况你用那一套东西是需要你重写的。
control里的代码已经获取到了roles了,问题就是在view里有user.identity.name是control里的值,roles没获取到。
@小小白白: 你没明白我的意思,我的意思是说既然你role和user都是自己的数据了,那你的user.isinrole呢?
比如说有一个用户名叫a,微软的那一套东西会根据a这个用户的id判断a这个用户是否是角色b呢?
他有一个角色用户的关系表,判断这两个有没有对应关系,你看看你是怎么写的吧。
httpContext.current在不同的httpRequest 中是变化的
也就是说用httpConext.current.items来保存的数据是不能跨页面传递的。
写在Globa就解决问题了。