Я искал в Интернете ответ на мою проблему и прочитал сайт msdn по элементам управления ASP.Net, безопасности и аутентификации, но либо не смог найти ответ, либо пропустил его со всей информацией, которую я прочитал.
Я создаю веб-сайт в 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
. Это код по умолчанию LoginView
из шаблона ASP.Net
веб-приложения.
<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="user@domain.com">
<network host="mail.domain.com" password="mypassword" userName="myusername" />
</smtp>
</mailSettings>
</system.net>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>