基于角色的表单验证,高手进,在线等!

doogi 2009-04-17 11:53:08
登录时
string userName = "zhang";
string userRole = "admin";
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
userName,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
userRole,
"/");
string hashTicket = FormsAuthentication.Encrypt(ticket);

HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashTicket);
Response.Cookies.Add(cookie);

Application_AuthorizeRequest(object sender, System.EventArgs e)时
HttpApplication App = (HttpApplication)sender;
HttpContext Ctx = App.Context; //获取本次Http请求相关的HttpContext对象
if (Ctx.Request.IsAuthenticated == true) //验证过的用户才进行role的处理
{
FormsIdentity Id = (FormsIdentity)Ctx.User.Identity;
FormsAuthenticationTicket Ticket = Id.Ticket; //取得身份验证票
string[] Roles = Ticket.UserData.Split(','); //将身份验证票中的role数据转成字符串数组
Ctx.User = new GenericPrincipal(Id, Roles); //将原有的Identity加上角色信息新建一个GenericPrincipal表示当前用户,这样当前用户就拥有了role信息
}


Web.config
<authentication mode="Forms" >
<forms name="DemoAuth" loginUrl="Web/login.aspx" timeout="30" path="/" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>

<location path="Demo1">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>


跳转时
//在这里roleOk已经是true了,为什么还是跳不进去,郁闷!待解!急!
bool roleOk = HttpContext.Current.User.IsInRole("admin");
Response.Redirect("Demo1/demo1.aspx");

高手指教!是不是Web.config设置的不对?
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfcfan 2009-04-17
  • 打赏
  • 举报
回复
roleOk无论是什么值都会跳转的,
至于结果吗,就不好说了。。
my145794 2009-04-17
  • 打赏
  • 举报
回复
肯定是Web.config的问题
<allow roles="admin"/>
<deny users="*"/>
itcrazyman 2009-04-17
  • 打赏
  • 举报
回复
mark up 帮顶
wuyq11 2009-04-17
  • 打赏
  • 举报
回复
修改
<authorization>
<deny users="?"/>
</authorization>


<authorization>
<allow users="*"/>
</authorization>
参考
doogi 2009-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wfcfan 的回复:]
roleOk无论是什么值都会跳转的,
至于结果吗,就不好说了。。
[/Quote]

我知道“roleOk无论是什么值都会跳转的”,加个bool roleOk = HttpContext.Current.User.IsInRole("admin")只是为了让看帖的人明白。我的意思是既然当前user的角色是admin,那为什么还进不了"Demo1/demo1.aspx"。

如果谁知道是Web.config有问题,那请写出正确的,不要说句“web.config”有问题就走人!!

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧