问一个问题,各位老大帮帮忙,IsInRole() 怎么老是false!!!在线等!
自定义角色管理,登录页面创建了验证票据并把role信息加入了UserData,在Global.asax中实现了AuthenticationRequest事件处理程序把UserData加入了角色数组,但是转跳到default.aspx之后可以取得登录用户名,即this.User.Identity.name,但是this.User.IsInRole("adminer")的值总是false!!!!!?????web.config都设置好了为forms认证!!!为了测试角色是否加入成功,我还在AuthenticationRequest事件处理程序中加入this.Context.User.IsInRole("adminer"),测试为true,但是转跳到default.aspx之后这个值就是false了!
很郁闷那,各位老大帮帮忙把!! --------------------编程问答-------------------- 急呀!!!不要沉下去了 --------------------编程问答-------------------- 帮顶了! --------------------编程问答-------------------- 还在等!!!!
高手出来呀!!! --------------------编程问答-------------------- http://www.svnhost.cn/Article/Detail-23.shtml --------------------编程问答-------------------- good --------------------编程问答-------------------- 谢谢小灰!我试试 --------------------编程问答-------------------- 小灰,刚才看了下你的代码:
你的AuthenticateRequest事件是给你自己定义的public class MyHttpModule : IHttpModule类的app_AuthenticateRequest(object sender, EventArgs e)方法完成的,然后设置了web.config
<httpModules>
<add name="MyHttpModule" type="BLL.MyHttpModule,BLL"></add>
</httpModules>
很好的解决方案!!
我的是把AuthenticationRequest事件在Global.ascs文件的Application_AuthenticationRequest()处理的,在这个方法里把用户角色写入了当前请求用户!然后在就在这下面测试IsInRole为true,但是转跳到其他页,测试值就是false,不能通过角色测试!难道自定义角色不能通过Global.ascs处理????
--------------------编程问答-------------------- 小灰,你的方案我试了,还是老问题,在app_AuthenticateRequest中测试IsInRole()为true,但是转跳页面后还是false!
难道是我的角色管理没有绕过系统自带的角色验证机制? --------------------编程问答-------------------- 你的域名是不是有问题。如果登录时写入的域名也会有影响。你不妨用httpwatch跟踪一下看看,到底哪个环节出了问题。
http://www.svnhost.cn/Download/?k=httpwatch --------------------编程问答-------------------- 我测试了下请求用户类型在authenticaterequest事件处理程序中写入role信息后,用户类型应该是GenericPrincipal,但是转跳页面后请求用户类型是RolePrincipal了!RolePrincipal这个应该是管理aspnetdb数据库成员,角色的类 --------------------编程问答-------------------- 代码帖出来看看... --------------------编程问答-------------------- 原因找到了,我的IIS里启用了角色管理,把它禁用就行,谢谢各位!
补充:.NET技术 , ASP.NET