Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / simplemembership mvc4 ограничить доступ к area / 25 сообщений из 30, страница 1 из 2
17.11.2013, 15:31
    #38467769
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
Как ограничить доступ определенным пользователем к area настройками web.config
...
Рейтинг: 0 / 0
17.11.2013, 15:53
    #38467781
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

http://stackoverflow.com/questions/2319157/how-can-we-set-authorization-for-a-whole-area-in-asp-net-mvc

Web.config-based security should almost never be used in an MVC application . The reason for this is that multiple URLs can potentially hit a controller, and putting these checks in Web.config invariably misses something. Remember - controllers are not associated with areas, routes are associated with areas. The MVC controller factory will happily serve controllers from the Areas/ folder for non-area requests if there's no conflict.

For example, using the default project structure, adding an Admin area with an AdminDefaultController, you can hit this controller via /Admin/AdminDefault/Index and /AdminDefault/Index.

The only supported solution is to put your attribute on a controller base class and to ensure that each controller within the area subclasses that base class.

ещё вопросы?
...
Рейтинг: 0 / 0
18.11.2013, 00:03
    #38468024
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
Почему авторизованный пользователь через 10 сек. становиться опять не авторизованным?

web.config<forms loginUrl="~/Account/Login" timeout="20" slidingExpiration="true" />

timeout хоть 10 хоть 20 хоть 20000
разницы нет
...
Рейтинг: 0 / 0
18.11.2013, 12:45
    #38468427
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

проблема может быть в реализации Account/Login
проверьте что в куках после авторизации
...
Рейтинг: 0 / 0
18.11.2013, 13:16
    #38468471
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstschКак ограничить доступ определенным пользователем к area настройками web.config
Безопасность в веб конфиге - моветон.
...
Рейтинг: 0 / 0
21.11.2013, 00:19
    #38472163
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
делаю след. образом

Код: c#
1.
2.
    [Authorize(Roles = "Admins")]
    public abstract class AdminController : Controller



на локальной машине все замечательно работает

на паркинге же пользователь авторизован, но при этом при любом запросе к закрытой ареа
его перекидывает на страницу логина, это может быть как аякс запрос
так и просто get. хотя при этом пользователь авторизован.
при этом через 1-2 сек повторно заходишь на страницу и перенаправления на
страницу логина не происходит
...
Рейтинг: 0 / 0
21.11.2013, 00:36
    #38472180
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
куки присутствуют
...
Рейтинг: 0 / 0
21.11.2013, 00:40
    #38472185
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
и получается странная вещь
страница в одном табе браузера загрузилась в тот же момент в другом табе произошла переадресация на логин страницу
...
Рейтинг: 0 / 0
21.11.2013, 09:06
    #38472347
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

покажите веб.конфиг
...
Рейтинг: 0 / 0
21.11.2013, 09:52
    #38472407
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework,
 Version=4.4.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxxxxx" requirePermission="false" />
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=xxxxxxxxxxxxx;pooling=true;" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="20" slidingExpiration="true" />
    </authentication>
    <roleManager enabled="true">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <httpHandlers>
      <add verb="GET" path="*imgrs.axd" type="MvcApplication5.ImageResize, MvcApplication5" />
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 
modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" 
preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 
modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" 
preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
 type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <security>
      <requestFiltering>
        <requestLimits maxUrl="10999" maxQueryString="9999" />
      </requestFiltering>
    </security>        
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="logfile" xsi:type="File" fileName="C://file.txt" />
    </targets>
    <rules>
      <logger name="*" minlevel="Info" writeTo="logfile" />
    </rules>
  </nlog>
</configuration>
...
Рейтинг: 0 / 0
21.11.2013, 10:18
    #38472441
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

попробуйте

Код: xml
1.
<forms loginUrl="~/Account/LogOn" timeout="2880" />



без sliding expiration

ещё решение

в LogOn

Код: c#
1.
FormsAuthentication.SetAuthCookie("username", false);



понятное дело вместо username подставлять реальный юзернейм.

и ещё, не хотите попробовать SimpleMembershipProvider? меньше заморочек и всё работает.
...
Рейтинг: 0 / 0
21.11.2013, 10:35
    #38472467
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
я вообще-то его и использую :-)
что-то не то в web.conig написано?
...
Рейтинг: 0 / 0
21.11.2013, 10:39
    #38472476
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

если вы используете симпл, то вот этот кусок:

Код: xml
1.
2.
3.
4.
5.
6.
7.
<roleManager enabled="true">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>



не нужен.
...
Рейтинг: 0 / 0
21.11.2013, 11:02
    #38472536
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
после того как убрал при входе в открытую только для одной роли area получаю:
provider: SQL Network Interfaces, error: 26 - Ошибка при обнаружении указанного сервера или экземпляра
...
Рейтинг: 0 / 0
21.11.2013, 11:07
    #38472548
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

странно, у меня на симпле всё ок. посмотрите, есть ли в базе таблицы с префиксом webpages_
и есть установлен ли атрибут [InitializeSimpleMembership] у закрытых контроллеров (или он добавлен в глобальные фильтры).
...
Рейтинг: 0 / 0
21.11.2013, 11:38
    #38472611
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
да не было [InitializeSimpleMembership]

теперь на локальной машине все заработало как и прежде.
а на хостинге нет.
когда заходишь в закрытую area то сначала предлагается авторизоваться
потом заходишь что-то секунд 30 делаешь все работает
через 30 секунд:

provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified
...
Рейтинг: 0 / 0
21.11.2013, 11:41
    #38472621
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

наверное у вас на локальном компе LocalDb, а на хостинге он не заводится. собственно так и должно быть.
создайте на сервере базу данных MS SQL или MS SQL Express и настройте подключение.
...
Рейтинг: 0 / 0
21.11.2013, 11:45
    #38472630
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
нет база тянется с хостинга
...
Рейтинг: 0 / 0
21.11.2013, 11:45
    #38472631
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
да и как иначе я вообще могу залогиниться
...
Рейтинг: 0 / 0
21.11.2013, 11:46
    #38472636
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

посмотрите,

есть ли в базе таблицы с префиксом webpages_
...
Рейтинг: 0 / 0
21.11.2013, 11:58
    #38472664
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
есть
webpages_membership
webpages_OAuthMembership
webpages_Roles
webpages_userInRoles
UserProfile

В табличках есть два пользователя
Обоим сопоставлено роль Admins
Которая в контролере указана как разрешенная к доступу

Логин происходит нормально и все работает 30 сек.
Провайдер советовал установить не изменяемые machinekey не помогло
...
Рейтинг: 0 / 0
21.11.2013, 12:08
    #38472695
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

вы точно убрали секцию <roleManager enabled="true"> ?

в общем похоже на то, что приложение не может получить свои роли из базы данных. либо он пытается получить роли из стандартной AspNet реализации мембершипа.

и ещё. проапгрейдите Entity Framework до 5-ой версии. возможно симпл не хочет толком работать с версией 4 (как у вас). это очень вероятно.
...
Рейтинг: 0 / 0
21.11.2013, 12:16
    #38472710
konstsch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
да точно убрано.
но почему же тогда 30 сек все работает,
и на локальном машине работает скольк угодно долго
надо попробовать еще другого провайдера
...
Рейтинг: 0 / 0
21.11.2013, 12:17
    #38472713
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

проапрейдите Entity Framework. 4.4 это ж прошлый век. не удивлюсьь, если проблема в этом.
...
Рейтинг: 0 / 0
21.11.2013, 12:18
    #38472718
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
simplemembership mvc4 ограничить доступ к area
konstsch,

вообще авторизация не должна слетать, даже если сервер перегружается каждый 5 сек. вся информация об аутентификации храниться в куках в шифрованном виде.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / simplemembership mvc4 ограничить доступ к area / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]