我觉得没有错呀,为什么这个角色的认证会出现这样的错误呀,来者有分

slinfo 2004-04-06 05:07:09
有两个文件包,Auth1和Auth2,角色Auth1只能查看Auth1文件包里面的网页和内容,角色Auth2只能看Auth2文件包里面的网页和内容。我写了这样的代码

在Auth1文件包的web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?" />
<allow roles="Auth1" />
</authorization>
</system.web>
</configuration>

在Auth1文件包的登陆页面里面:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,"Auth1User",DateTime.Now,DateTime.Now.AddHours(3),false,"Auth1") ;
string encryptedTicket = FormsAuthentication.Encrypt(ticket) ;
HttpCookie authenticationCookie = new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket) ;
Response.Cookies.Add(authenticationCookie) ;
Response.Redirect(FormsAuthentication.GetRedirectUrl("Auth1User",false)) ;

在Auth2的wen.config中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?" />
<allow roles="Auth2" />
</authorization>
</system.web>
</configuration>


以上的这两个web.config里面已经限制了只有相应的角色才能进入。

最后我在Global文件中这样写:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if(Request.IsAuthenticated)
{
string[] roles = ((FormsIdentity)(Context.User.Identity)).Ticket.UserData.Split(';') ;
GenericPrincipal newPrincipal = new GenericPrincipal(Context.User.Identity,roles) ;
Context.User = newPrincipal ;
}
}
根据不同的角色得到不同的Principal。

运行的时候,在Auth1里面,可以登陆,监视后用户角色是Auth1,但是我用这个角色却进入了Auth2文件包里面,这个是怎么搞的呀,有什么错误呀,我看了半天都没有发现有什么错呀


大家帮忙呀,来者有分!!!
...全文
36 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
einsteincao 2004-04-06
  • 打赏
  • 举报
回复



Web.config 写的有问题

hutt()写的是正确的^_^
slinfo 2004-04-06
  • 打赏
  • 举报
回复
hutt() 的方法也是对的,我刚才试了一下
hutt 2004-04-06
  • 打赏
  • 举报
回复
快给我分
hutt 2004-04-06
  • 打赏
  • 举报
回复
这样改:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<allow roles="Auth1" />
<deny users="*" />
</authorization>
</system.web>
</configuration>


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<allow roles="Auth2" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
chenxy2002 2004-04-06
  • 打赏
  • 举报
回复
不给50分下次休想我给你顶:)
vasun 2004-04-06
  • 打赏
  • 举报
回复
-----禁止Auth1进入Auth2文件包,添加标识<deny roles ="Auth1" />
在Auth2的wen.config中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?" />
<allow roles="Auth2" />
<deny roles ="Auth1" />
</authorization>
</system.web>
</configuration>
ppp80 2004-04-06
  • 打赏
  • 举报
回复
....
帮你up
bitsbird 2004-04-06
  • 打赏
  • 举报
回复
先占1楼再看

62,046

社区成员

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

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

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

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