2012-02-09 3 views
0

Моя рольManager в web.confi выглядит так.Кэширование ролей В Cookie не работает - ASP.NET

<roleManager enabled="true" 

    cacheRolesInCookie="true" 
    cookieName=".ASPR0LE3S" 
    cookieTimeout="115" 
    cookieSlidingExpiration="true" 
    cookieProtection="All" 
    createPersistentCookie="false" 
    defaultProvider="CustomizedRoleProvider">    

    <providers>     
    <add name="CustomizedRoleProvider" 
    type="System.Web.Security.SqlRoleProvider" 
    connectionStringName="MyConn" 
    applicationName="/MyApp"/>    
    </providers> 

</roleManager> 

Что я делаю, это сохранить мои роли в Cookie. Код должен хранить его, но когда я просматриваю файлы cookie в FireFox, такого файла cookie нет в названии ASPR ... В чем может быть проблема? Я что-то упускаю.

+0

Чтобы просмотреть их, вы должны сначала зарегистрироваться. Вы входите в систему? – Aristos

+0

Я был вошел в систему, и я не мог его увидеть. Но даже если я не войду в систему, я все равно должен это увидеть. Я предполагаю, что он никогда не создается. Может быть, потому, что у меня слишком много ролей, и она превышает ограничение по размеру? Я бы не из-за этого –

+0

да, если вы используете слишком много ролей для пользователя, можно избежать этого, потому что cookie имеет ограничения, и браузер не может его сохранить или даже сбой. Также вы задерживаете слишком много страницы, а также небезопасны. – Aristos

ответ

-1

Прежде всего, чтобы кешировать роли в файле cookie не так безопасны, потому что кто-то может потенциально украсть/манипулировать этой информацией и использовать их для изменения ролей. Вот вопрос об этом:

Can some hacker steal the cookie from a user and login with that name on a web site?

Во-вторых, когда вы храните информацию на это печенье, то эта информация будет идти вперед и назад при каждом вызове на ваш сайт и добавить дополнительные накладные расходы.

Если ваши роли слишком велики, браузер не сможет их сохранить, или другие файлы cookie, возможно, не смогут их сохранить. В некоторых случаях я вижу странное поведение в браузере, такое как авария или белые страницы из-за этого ограничения на количество файлов cookie.

Попробуйте установить минимально возможную информацию о файлах cookie.

Некоторые подробную информацию о пределах печенья:
http://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/
What are the current cookie limits in modern browsers?

Роли на куки будут иметь возможность просматривать их в зашифрованном виде, после использования вырублено в

+0

Я не знаю, как работают поставщики роли ASP.NET при хранении ролей в отдельном файле cookie, но старая рекомендация не хранить такую ​​информацию в куки-файлах слишком универсальна. Существует так много способов, с помощью которых cookie может быть защищен от методов «человек-в-середине» и «угон», что это не обязательно плохая идея, учитывая правильные меры предосторожности. – Chris

+0

@Chris Ok Я принимаю ваш аргумент - проблема здесь в том, что если вы сделаете хорошее безопасное шифрование, вы получите слишком большой файл cookie - возможно, браузер отклонит его и большие накладные расходы. Поэтому, если вы получите тот, который потеряете другого. – Aristos

+0

По крайней мере, сейчас мое приложение является локальным (в нашей сети), поэтому безопасность - это проблема + накладные расходы. У меня около 10 ролей. –

0

От docs.:

Когда для свойства CacheRolesInCookie установлено значение true в файле Web.config, информация о роли для каждого пользователя хранится в файле cookie. Когда управление ролью проверяет, находится ли пользователь в определенной роли, cookie-файл роли проверяется перед вызовом поставщика ролей для проверки списка ролей в источнике данных. Файл cookie динамически обновляется для кэширования последних утвержденных имен ролей.

Роли не будут храниться в файле cookie до момента, когда вы попытаетесь проверить роль. Вероятно, вы просто входите в систему и проверяете файл cookie, не выполнив никаких действий, которые заставили провайдера роли искать роли пользователя в источнике данных.

+0

'cookie до первого раза, когда вы пытаетесь проверить роль, что это точно означает? Разве это не похоже на вход в систему? Кстати, я видел cookie позже, но тот факт, что мое приложение работает медленно, означает, что он, скорее всего, не проверяет cookie вообще. –

0

Если вы находитесь на .NET 4.5, он не будет работать, вам придется его самостоятельно сохранить. См. Пример кода here.

Смежные вопросы