我一直在搜索互聯網上的問題的答案,並通過msdn網站上的ASP.Net控件,安全和身份驗證,但無論找不到答案或用我讀過的所有信息錯過了它。LoginView在帳戶文件夾中工作,而不是在網站的根文件夾中
我在ASP.Net v2.0中構建一個網站,以在遠程服務器上託管。我使用MySQL作爲後端,它也包含用戶表。我使用了與默認成員資格表中使用的相同的用戶表結構。應用程序中的文件夾都具有分配給它們的默認角色權限。
在我的本地計算機上的測試中發生了以下問題。
當我登錄使用~/Account/Login.aspx
頁面的用戶時,我將用戶重定向到~/Account/AccountDetails.aspx
,其中包含LoginView
。登錄後,用戶名在LoginView
內的此頁面上可見,並且它們已通過身份驗證。
當我然後去~/Default.aspx
,並使用相同的代碼LoginView
,用戶名不顯示,他們不再驗證。
我不想創建多個頁面來顯示相同的數據,因爲登錄和匿名用戶都需要在~/Default.aspx
頁面中看到相同的信息。我只是希望顯示用戶已登錄Default.aspx
頁面或~/
文件夾中的任何頁面。
我知道這將是一個簡單的設置或需要改變,如角色或會員等,但我無法弄清楚。
我已經通過stackoverflow看,發現很多LoginView
的問題,但似乎無法找到一個回答我的問題。
我希望有人能夠指引我走向正確的方向。
以下是在Default.aspx
和AccountDetails.aspx
頁面上使用的代碼。這是來自模板ASP.Net
網站應用程序的默認LoginView
代碼。
<div class="loginDisplay">
User Authenticated? <%= Page.User.Identity.IsAuthenticated %>
<asp:LoginView ID="HeadLoginView" runat="server">
<AnonymousTemplate>
[ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
</AnonymousTemplate>
<LoggedInTemplate>
Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
</LoggedInTemplate>
</asp:LoginView>
</div>
的~/Account/web.config
文件包含以下內容:
<?xml version="1.0"?>
<configuration>
<location path="Register.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
的~/web.config
文件包含以下信息。我編輯了一些用戶名和密碼的值。我也刪除了註釋行。
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MySqlMembershipConnection" connectionString="Data Source=mydatasource;user id=dotnet;password=dotnet;" providerName="MySql.Data.MySqlClient" />
<add name="mycs" connectionString="Dsn=mydsn" providerName="System.Data.Odbc" />
<remove name="LocalMySqlServer" />
<add name="LocalMySqlServer" connectionString="database=mydsn;server=localhost;User Id=dotnet;password=dotnet" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<system.web>
<sessionState mode="Custom" cookieless="false" regenerateExpiredSessionId="true" customProvider="MySqlSessionStateProvider">
<providers>
<add name="MySqlSessionStateProvider" type="MySql.Web.SessionState.MySqlSessionStateStore, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="" connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="False" autogenerateschema="True" />
</providers>
</sessionState>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="30" name=".ASPXFORM$" path="~/" requireSSL="false" slidingExpiration="true" defaultUrl="~/Default.aspx" enableCrossAppRedirects="false" />
</authentication>
<membership defaultProvider="MySQLMembershipProvider">
<providers>
<clear />
<remove name="MySQLMembershipProvider" />
<add name="MySQLMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="mydescription" connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="False" autogenerateschema="True" enablePasswordRetrieval="False" enablePasswordReset="True" requiresQuestionAndAnswer="True" requiresUniqueEmail="False" passwordFormat="Clear" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
<profile defaultProvider="MySQLProfileProvider">
<providers>
<clear />
<remove name="MySQLProfileProvider" />
<add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="" connectionStringName="LocalMySqlServer" writeExceptionsToEventLog="False" autogenerateschema="True" />
</providers>
</profile>
<roleManager enabled="true" defaultProvider="MySQLRoleProvider">
<providers>
<clear />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
<add applicationName="/" description="" connectionStringName="LocalMySqlServer"
writeExceptionsToEventLog="False" autogenerateschema="True"
name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</roleManager>
<customErrors mode="Off" />
<compilation debug="true" />
</system.web>
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="mail.domain.com" password="mypassword" userName="myusername" />
</smtp>
</mailSettings>
</system.net>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
你不能分享web.config中配置的內容嗎?什麼說授權標籤? <授權> authorization> –
2011-12-29 11:46:47
嗨,它是模板ASP.NET網站附帶的標準web.config設置。 – 2011-12-29 11:56:46
你能給我一個根文件夾中web.config的快照嗎?它是否包含授權標籤? – 2011-12-29 12:06:49