Fórum Web.config - adicionar e remover tag location #381148
12/07/2010
0
{
XmlDocument xmlConfig = new XmlDocument();
xmlConfig.Load(caminhoFisicoRaiz + @"\web.config"); List<XmlNode> listNod = new List<XmlNode>();
foreach (XmlNode nod in xmlConfig.ChildNodes[1].ChildNodes)
{
if (nod.Name == "location")
listNod.Add(nod);
} foreach (XmlNode nod in listNod)
xmlConfig.ChildNodes[1].RemoveChild(nod); XmlTextWriter writer = new XmlTextWriter(caminhoFisicoRaiz + @"web.config", null);
writer.Formatting = Formatting.Indented;
xmlConfig.WriteTo(writer);
writer.Flush();
writer.Close(); } Porém, após executar o método, se eu for no servidor e no local onde está publicado o projeto, as tags permanecem por lá. Dei permissão de leitura e escrita pelo IISno arquivo web.config. O que será que pode estar acontecendo?

Carlos Nogueira
Curtir tópico
+ 0Posts
12/07/2010
Fabio Mans
Fabio
Gostei + 0
12/07/2010
Carlos Nogueira
Gostei + 0
12/07/2010
Fabio Mans
Gostei + 0
12/07/2010
Carlos Nogueira
Gostei + 0
12/07/2010
Fabio Mans
Gostei + 0
12/07/2010
Carlos Nogueira
Gostei + 0
12/07/2010
Fabio Mans
Web.sitemap
<siteMapNode url="~/Default.aspx" title="::: INÍCIO :::" description="Tela principal">
<siteMapNode url="" title="SOLICITAÇÕES" description="Solicitações" roles="Administrador,Selecao,Aprovador" >
<!--<siteMapNode url="~/Selecao/SolicitacoesTodas.aspx" title="TODAS SOLICITAÇÕES" description="Todas as solicitações" roles="Administrador,Selecao, Aprovador" />-->
<siteMapNode url="~/Selecao/ConsultarSolicitacoes.aspx" title="PESQUISAR SOLICITAÇÕES" description="Pesquisar por solicitações" roles="Administrador, Selecao, Aprovador" />
<siteMapNode url="~/Selecao/MinhasSolicitacoes.aspx" title="MINHAS SOLICITAÇÕES" description="Solicitações por recrutador" roles="Administrador, Selecao, Aprovador" />
<siteMapNode url="~/Selecao/Favoritos.aspx" title="FAVORITOS" description="Solicitações favoritos" roles="Administrador, Selecao, Aprovador" />
</siteMapNode>
<siteMapNode url="~/Solicitacao.aspx" title="NOVA SOLICITAÇÃO" description="Cadastrar nova solicitação" roles="Usuario"/>
<siteMapNode url="~/ConsultaSolicitacao.aspx" title="SOLICITAÇÕES DO MEU ESTABELECIMENTO" description="Relação de solicitações realizadas" roles="Usuario" />
Em negrito o que cada perfil pode acessar.
Eu não guardo o perfil em Session e sim no cook de autenticação.
Fabio
================================================================
Preciso disponibilizar uma página para o usuário (provavelmente um administrador) que irá acessar a área de backoffice do projeto para configurar os acessos dos usuários nas páginas (menu). Esta configuração será feita para os perfis existentes no projeto. Eu utilizo um controle chamado skmMenu para isso, que até o momento está funcionando conforme o que foi programado, isto é, está dinâmico conforme o perfil do usuário. Mas além do menu, por segurança acredito que seja interessante restringir esse mesmo acesso no web.config. Então, além das alterações que ele faz para um determinado perfil acessar determinada página, eu registro isso no web.config. Essa parte de registrar no web.config que estou tendo trabalho, isto é, alterar as tags location dinamicamente, para que o FormsAuthentication faça o resto do trabalho.
Gostei + 0
13/07/2010
Carlos Nogueira
Gostei + 0
13/07/2010
Fabio Mans
Gostei + 0
14/07/2010
Carlos Nogueira
Gostei + 0
22/07/2010
Carlos Nogueira
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/pages/backoffice/home.aspx" title="Inicio BackOffice" description="">
<siteMapNode url="" title="Cadastro" description="">
<siteMapNode url="~/pages/backoffice/usuarios.aspx" title="Usuários" description=""></siteMapNode>
<siteMapNode url="~/pages/backoffice/perfis.aspx" title="Perfis" description=""></siteMapNode>
<siteMapNode url="~/pages/backoffice/alterarsenha.aspx" title="Alterar Senha" description=""></siteMapNode>
</siteMapNode>
<siteMapNode url="" title="Operações" description="">
<siteMapNode url="~/pages/backoffice/permissoes.aspx" title="Permissões" description=""></siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap> Ao executar o projeto, consigo visualizar apenas os menus "Cadastro" e "Operações". Ao passar o mouse por cima, não é apresentado os items desses menus. Em uma pesquisa na internet, achei este link: http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/ba4a3252-9664-457c-9288-c876ca8955f2. Nele fala de um problema com IE8, então eu acrescentei o que ele pediu no CSS mas continuou o mesmo problema. Então encontrei este link: http://forums.asp.net/p/1552631/3810883.aspx. Acrescentei a tag na minha masterpage, mas também continuou o problema. Você sabe o que pode estar ocorrendo? Obrigado!
Gostei + 0
22/07/2010
Fabio Mans
<!--<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="Home" description="Home">
<siteMapNode url="~/Login.aspx" title="Acessar" description="Login" />
<siteMapNode url="~/SolicitacaoTecnologia.aspx" title="Solicitar à Tecnologia" description="Solicitações à Tecnologia" />
<siteMapNode url="~/AreaAdministrativa/Default.aspx" title="Área Administrativa" description="" >
<siteMapNode url="~/AreaAdministrativa/GerenciarAcesso.aspx" title="Gerenciar Acesso" description="" />
<siteMapNode url="~/AreaAdministrativa/GerenciarGrupoSolucionador.aspx" title="Gerenciar Grupo" description="" />
<siteMapNode url="~/AreaAdministrativa/GerenciarPerfil.aspx" title="Gerenciar Perfil" description="Permite gerenciar perfis de acesso dentro do sistema." />
<siteMapNode url="~/AreaAdministrativa/GerenciarSla.aspx" title="Gerenciar SLA" description="" />
<siteMapNode url="~/AreaAdministrativa/GerenciarStatus.aspx" title="Gerenciar Status" description="" />
<siteMapNode url="~/AreaAdministrativa/GerenciarArvore.aspx" title="Gerenciar Árvore (Tipo)" description="" />
<siteMapNode url="~/AreaAdministrativa/ClassificarSolicitacoes.aspx" title="Classificar Solicitações." description="" />
</siteMapNode>
</siteMapNode>
</siteMap>
Fabio
Gostei + 0
23/07/2010
Carlos Nogueira
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/pages/backoffice/home.aspx" title="Inicio BackOffice" description="">
<siteMapNode url="" title="Cadastro" description="">
<siteMapNode url="~/pages/backoffice/usuarios.aspx" title="Usuários" description=""></siteMapNode>
</siteMapNode>
</siteMapNode>
</siteMap> Ele não funcionou no Internet Explorer (versão 8), mas funcionou no firefox. Onde está o erro neste sitemap?
Gostei + 0
23/07/2010
Carlos Nogueira
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode siteMapFile="~/pages/backoffice/backoffice.sitemap" />
</siteMapNode>
</siteMap> E o meu arquivo backoffice.sitemap se encontra assim: <?xml version="1.0" encoding="utf-8"?>
<siteMap>
<siteMapNode url="~/pages/backoffice/home.aspx" title="Home" description="" roles="*">
<siteMapNode url="" title="Cadastro" description="" roles="Desenvolvedor,Técnico,Gerente,Administrativo">
<siteMapNode url="~/pages/backoffice/perfis.aspx" title="Perfis" description="" roles="Gerente" />
<siteMapNode url="~/pages/backoffice/usuarios.aspx" title="Usuários" description="" roles="Desenvolvedor" />
<siteMapNode url="~/pages/backoffice/alterarsenha.aspx" title="Alterar Senha" description="" roles="Desenvolvedor,Técnico,Gerente,Administrativo" />
</siteMapNode>
<siteMapNode url="" title="Operações" description="" roles="Gerente">
<siteMapNode url="~/pages/backoffice/permissoes.aspx" title="Permissões" description="" roles="Gerente" />
</siteMapNode>
</siteMapNode>
</siteMap> Abaixo segue o código que utilizo para carregar o controle menu do ASP.NET (pensando que posso ter vários arquivos sitemap, que podem ser escolhidos conforme determinada situação): // variável para armazenar a URL do nó principal do menu
string URL = String.Empty; // define a URL de acordo com o parâmetro PROFILE
URL = "~/pages/backoffice/home.aspx"; // cria o objeto XmlSiteMapProvider que será utilizado para construir
// o SiteMap dinamicamente.
XmlSiteMapProvider xmlSiteMap = new XmlSiteMapProvider();
System.Collections.Specialized.NameValueCollection MySiteMap = new System.Collections.Specialized.NameValueCollection(1);
MySiteMap.Add("siteMapFile", "Web.sitemap"); // inicializa o novo objeto SiteMapProvider
xmlSiteMap.Initialize("MyProvider", MySiteMap);
xmlSiteMap.BuildSiteMap(); // cria o DataSource para o objeto SiteMap
SiteMapDataSource siteMap = new SiteMapDataSource(); // atribui o nó principal de acordo com o perfil do usuário
siteMap.StartingNodeUrl = URL; // oculta o nó principal (opcional)
siteMap.ShowStartingNode = false; mnBackoffice.DataSource = siteMap;
mnBackoffice.DataBind(); Para o menu "Usuários" (que se encontra em negrito) tenho apenas o perfil "Desenvolvedor". Quando acesso o sistema com um usuário que tem o perfil "Gerente" (fazendo uso de FormsAuthentication), o menu "Usuários" aparece. Neste caso, o controle menu do ASP.NET não deveria ter omitido esse menu por não se encontrar na roles?
Gostei + 0
26/07/2010
Carlos Nogueira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)