Autenticação AngularJS + API RESTful
Isso foi abordado em algumas questões diferentes, e em alguns tutoriais diferentes, mas todos os recursos anteriores que encontrei não atingem bem a cabeça.
Em uma casca de noz, eu precisoLogin via POST dehttp://client.foo
parahttp://api.foo/login
Ter um estado de GUI / componente "logado" para o usuário que fornece umalogout
rotaSer capaz de "atualizar" a interface do usuário quando o usuário faz logout / logout.Este tem sido o mais frustranteProteger minhas rotas para verificar o estado autenticado (se necessário) e redirecionar o usuário para a página de login de acordoMeus problemas sãoToda vez que eu navego para uma página diferente, preciso fazer a ligação paraapi.foo/status
para determinar se o usuário está ou não logado. (ATM Estou usando o Express para rotas) Isso causa um soluço quando o Angular determina coisas comong-show="user.is_authenticated"
Quando faço login / logout com sucesso, preciso atualizar a página (não quero fazer isso) para preencher coisas como{{user.first_name}}
, ou no caso de logout, esvazie esse valor.// Sample response from `/status` if successful
{
customer: {...},
is_authenticated: true,
authentication_timeout: 1376959033,
...
}
O que eu tenteihttp://witoldsz.github.io/angular-http-auth/1http://www.frederiknakstad.com/authentication-in-single-page-applications-with-angular-js/2https://github.com/mgonto/restangular (Para a vida de mim eu não conseguia descobrir comoPOST
compost data
e nãoquery params
. Os documentos não revelaram nada sobre o assunto.Porque eu sinto que estou perdendo a cabeçaParece que todo tutorial depende de uma solução de banco de dados (muitos do Mongo, Couch, PHP + MySQL, ad infinitum) e nenhum se baseia puramente na comunicação com uma API RESTful para persistir nos estados registrados. Uma vez logado, adicionais POSTs / GETs são enviados comwithCredentials:true
, então esse não é o problemaNão consigo encontrar NENHUM exemplos / tutoriais / repos que fazem Angular + REST + Auth, sem uma linguagem de back-end.Eu não sou muito orgulhosoReconheço que sou novo em Angular e não ficaria surpreso se eu me aproximasse disso de uma maneira ridícula; Eu ficaria feliz se alguém sugerisse uma alternativa - mesmo que seja sopa de nozes.
estou a usarExpress
principalmente porque eu realmente amoJade
eStylus
- Eu não sou casado com oExpress
'roteamento e vai desistir se o que eu quero fazer só é possível com o roteamento do Angular.
Agradecemos antecipadamente por qualquer ajuda que alguém possa fornecer. E, por favor, não me peça para o Google, porque eu tenho cerca de 26 páginas de links roxos. ;-)
1Esta solução se baseia no mock do $ httpBackend do Angular, e não está claro como fazê-lo falar com um servidor real.
2Este foi o mais próximo, mas desde que eu tenho uma API existente eu preciso autenticar com, eu não poderia usar 'localStrategy' do passaporte, e pareciainsano para escrever um serviço OAUTH ... que só eu pretendia usar.