2011-06-13 73 views
1

我有一個應用程序對特定用戶(East)進行身份驗證並將其重定向到他們各自的頁面(East.aspx)。無論何時他們轉到授權頁面(East.aspx),它們被重定向到登錄頁面。授權用戶無法訪問他們的頁面

爲解決上述問題,我創建了角色並將用戶添加到Application_Start事件中的應用程序文件(Global.asax)中的特定角色。

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    if (Roles.RoleExists("Browser") == false) 
    { 
     Roles.CreateRole("Browser"); 
     Roles.AddUserToRole("East","Browser"); 
    } 
    if (Roles.RoleExists("Buyer") == false) 
    { 
     Roles.CreateRole("Buyer"); 
     Roles.AddUserToRole("B2","Buyer"); 
    } 
    if (Roles.RoleExists("Seller") == false) 
    { 
     Roles.CreateRole("Seller"); 
     Roles.AddUserToRole("S1","Seller"); 
    } 
    if (Roles.RoleExists("Admin") == false) 
    { 
     Roles.CreateRole("Admin"); 
     Roles.AddUserToRole("A1","Admin"); 
    } 

} 

在web.config文件中,我實現以下

</authorization> 

<roleManager enabled="true" defaultProvider="SqlRoleManager"> 
    <providers> 
    <clear/> 
    <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="MyDbConn" applicationName="RolebasedApp"/> 
    <add applicationName="RolebasedApp" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider"/> 
    </providers> 
</roleManager> 
</system.web> 

我正在測試上述情況只有東用戶。我想確保我的應用程序名稱是(我開始爲不同用戶創建網頁的應用程序名稱)。

當所有這些都完成後,當我運行我的應用程序並輸入用戶「東」的正確憑據。我導航到Login頁面而不是East.aspx

這怎麼解決?

回答

0

您需要的配置,看起來像這樣:

<location path="East.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="?" />   <!--Deny all Anonymous (not logged in) users--> 
     <allow roles="east"/>  <!--Permit users in these roles--> 
     <deny users="*"/>  <!--Deny all users--> 
     </authorization> 
    </system.web> 
    </location> 

可以跳過位置標籤如果east.aspx是在一個單獨的文件夾,該文件夾都有自己的web.config文件。

+0

@查克謝謝,我做了上述web.config文件的更改,但仍然導航到登錄頁面,即使我輸入東用戶的正確憑據 – user490706 2011-06-13 19:08:36

+0

什麼文件夾是east.aspx in和where是你做了更改的web.config文件? – 2011-06-13 19:54:57

+0

我有允許角色爲東,它可能需要是東。 – 2011-06-13 19:56:03