我觉得没有错呀,为什么这个角色的认证会出现这样的错误呀,来者有分
有两个文件包,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文件包里面,这个是怎么搞的呀,有什么错误呀,我看了半天都没有发现有什么错呀
大家帮忙呀,来者有分!!!