No post anterior acoplamos o módulo DBAuthorizationModule e removemos o módulo UrlAuthorizationModule da execução da aplicação. Isso fará com que a avaliação das políticas seja feita utilizando o provider, que tem o papel de disponibilizar as informações para o módulo e para a aplicação.
Mas as configurações no arquivo Web.config não se resumem a isso. Além das configurações do Membership e Roles, ainda precisamos registrar o provider responsável pela autorização no Web.config. A criação da classe que representa essa seção já foi discutida no artigo em que demonstro como criar um provider customizado. Esse artigo pode ser acessado a partir deste endereço e vou assumir que você tenha o devido conhecimento nisso.
No código abaixo limitei as configurações relevantes do provider, como o registro da seção, a conexão com o banco de dados e a configuração do provider em si. Note que o escolhido foi o “SqlAuthorizationProvider”:
<?xml version=”1.0″?>
<configuration>
<configSections>
<section
name=”dbAuthorization”
type=”ProjetandoNET.Web.Configuration.DBAuthorizationSection, ProjetandoNET”
requirePermission=”false” />
</configSections>
<connectionStrings>
<clear/>
<add
name=”SqlConnectionString”
connectionString=”Data Source=.;Initial Catalog=DB;Integrated Security=SSPI;”
providerName=”System.Data.SqlClient” />
</connectionStrings>
<dbAuthorization defaultProvider=”SqlAuthorizationProvider”>
<providers>
<add
name=”SqlAuthorizationProvider”
type=”ProjetandoNET.Web.Security.SqlAuthorizationProvider, ProjetandoNET”
applicationName=”WebTeste”
connectionStringName=”SqlConnectionString”
storeRulesInCache=”true”
commandTimeout=”40″ />
</providers>
</dbAuthorization>
</configuration>
Assim como na configuração do módulo, o registro da seção que criamos e também os tipos dos providers referentes à autorização também devem contemplar o nome completo (namespace + Assembly). Você pode utilizar cada elemento add para adicionar quantos providers forem necessários mas, em runtime, o ASP.NET utilizará o provider especificado no atributo defaultProvider.