问题描述
自定义角色管理,登录页面创建了验证票据并把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了!很郁闷那,各位老大帮帮忙把!!
解决方案
解决方案二:
急呀!!!不要沉下去了
解决方案三:
帮顶了!
解决方案四:
还在等!!!!高手出来呀!!!
解决方案五:
解决方案六:
good
解决方案七:
谢谢小灰!我试试
解决方案八:
小灰,刚才看了下你的代码:你的AuthenticateRequest事件是给你自己定义的publicclassMyHttpModule:IHttpModule类的app_AuthenticateRequest(objectsender,EventArgse)方法完成的,然后设置了web.config<httpModules><addname="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里启用了角色管理,把它禁用就行,谢谢各位!