Usuário com melhor resposta
Verificação de autenticação automática em toda aplicação

Pergunta
-
Boa tarde.
Venho do Zend com PHP e trabalho com Windows Forms a vários anos. Conheço ASP.Net WebForms mas no ASP.NET MVC estou começando agora meus estudos.
Estou olhando quanto a autenticação e o atributo[Autorize] funciona direitinho, sem nada para reclamar. Porém tenho uma dúvida:
Meu site, na verdade minha aplicação Web, é um sistema de gestão comercial (um mini-erp) web. Desta forma não há áreas públicas, o usuário sempre tem que estar autenticado para ter acesso as controllers e views.
Tem alguma configuração no Web.Config ou no Global.asax que eu diga que qualquer acesso não autenticado tem que jogar para /Login? Não quero por isso em cada action, em cada controller.Desde já agradeço!
Romulo Oliveira
Nova Friburgo - RJ
Respostas
-
Sim, você pode setar isso nas configurações globais dentro do global.asax ou você pode configurar nos controllers tambem:
protected void Application_Start() { GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "", Users = "" }); }
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta Romulo Oliveira Almeida quarta-feira, 14 de novembro de 2012 17:20
Todas as Respostas
-
Sim, você pode setar isso nas configurações globais dentro do global.asax ou você pode configurar nos controllers tambem:
protected void Application_Start() { GlobalFilters.Filters.Add(new AuthorizeAttribute() { Roles = "", Users = "" }); }
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta Romulo Oliveira Almeida quarta-feira, 14 de novembro de 2012 17:20
-
-
Bom dia.
Legal o MVC da Microsoft só que o Razor com EF deixa tudo muito automático e acho que terei problemas em views mais complexas. Vejo o EF como uma solução legal mas me preocupo quando eu tiver com o sistema em produção. O ERP da empresa hoje conta com 700 tabelas, estou fazendo um projeto pessoal mas rapidamente vou chegar a 80 tabelas. Fico preocupado com a performance.
Já usei ASP.NET antes (2.0) com ADO.Net puro e o resultado era muito bom, muito rápido. Eu gostaria de usar ADO.Net puro no MVC 4 mas daí não vou usar o Razor e nem os Data Annotations das classes. Usando MVC 4 sem estes recursos (atributos Required por exemplo) me sentirei andando contra o rio, entende? Por isso estou aderindo ao MVC exatamente como a Microsoft sugere. As facilidades comparando com o Zend são muito boas (Razor). No PHP tenho muita flexibilidade e padrão com o Zend, sinto-me no controle da situação. Com estas facilidades do MVC e Razor é legal mas tem hora que eu não sei direito como irá funcionar.
Outra coisa é que no PHP eu criei um padrão XML onde toda a view, 100% mesmo, era gerada apenas via arquivo XML. Consegui uma reutilização de código acima do normal com aquilo. Em Razor não tem como pois não posso gerar ele dinamicamente. Crio alguns helpers para mim mas eu queria algo para criar a view inteira lendo um XML. Mas fazendo isso não consigo fazer a validação pelo Model e outras coisas legal que a MS nos oferece.
Obrigado pela resposta!Romulo Oliveira
Nova Friburgo - RJ -
Que tipo de problema você acha que pode ter com o EF? Normalmente as lentidões com o entity são devido a joins que não deveriam ser feitos, mas são feitos por terem sido mal projetados; mas concordo, fazer o SQL na mão é sempre melhor em questão de performance :)
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
Concordo com o Murilo, SQL na mão e otimo rsrsrs... estou iniciando em mvc tbm e me sinto meio perdido, mais a cada descoberta fico mais facinado mvc 4 + EF \o/
"Nunca deixe que os outros te subestimen, mas tambem não seja arrogante seja humilde e prove quem é
-
Performance basicamente. Antes quando eu olhava o Hibernate e NHibernate, onde tudo tinha que ser configurado em arquivos XML eu já me afastava logo. Mas o EF com o esquema dos atributos nas classes realmente deixou tudo muito mais simples e está funcionando muito bem.
Aproveitando o assunto eu estava fazendo um teste. Em uma tabela eu fiz um select com o EF e na View peguei os dados e montei um foreach tranquilo.
Daí em outro teste eu fiz o select mas apenas com alguns campos onde eu fiz um Select New {Campo1, Campo2}.
Na view estava dando erro pois o objeto esperado estava sendo diferente do enviado. Solução?
Meu modelo é IDConexao. Criei um IDConexaoView com apenas os 4 campos que eu quero. Daí funcionou perfeitamente. Essa é a melhor técnica mesmo?
-
Você pode usar o .Select para selecionar campos especificos do seu Model:
public class Pessoa{ public int Id{get;set;} public string Nome{get;set;} public int Idade{get;set;} } public static void Main(){ var nome = _db.Pessoa .Where(p => p.Id == 1) .Select(p => new {p.Nome}) .First(); }
Assim você pega somente o nome da pessoa com Id = 1.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
Você pode usar o .Select para selecionar campos especificos do seu Model:
public class Pessoa{ public int Id{get;set;} public string Nome{get;set;} public int Idade{get;set;} } public static void Main(){ var nome = _db.Pessoa .Where(p => p.Id == 1) .Select(p => new {p.Nome}) .First(); }
Assim você pega somente o nome da pessoa com Id = 1.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
var nome = (from p in _db.Pessoa where p => 1 select p.Nome).First();
-
-
Murilo, uma coisa estranha.
Configurei no Web.Config assim:
<authentication mode="Forms"> <forms loginUrl="~/Login/Login" timeout="2880" /> </authentication>
Ele direciona corretamente porém a view não é executada. Coloco qualquer caractere lá e nada. Coloco um breakpoint na controller e nada.
Só que se eu tirar as linhas que você me ensinou do Application_Start e eu chamar a Login/Login ele roda direitinho.
O que pode ser? -