Eu sou novo no AngularJS, passei pelo tutorial e comecei a entendê-lo.
Eu tenho um back-end para meu projeto pronto, onde cada um dos REST
endpoints precisa ser autenticado.
O que quero fazer
a.) Quero ter uma única página para meu projeto http://myproject.com
.
b.) Uma vez que um usuário acessa a URL no navegador, com base em se o usuário está conectado ou não, ele é apresentado a uma página inicial / visualização ou página / visualização de login na mesma url http://myproject.com
.
c.) se um usuário não estiver logado, ele preenche o formulário e o servidor define uma USER_TOKEN
sessão, de modo que todas as solicitações adicionais aos terminais serão autenticadas com base emUSER_TOKEN
Minhas confusões
a.) Como posso lidar com a autenticação do lado do cliente usando AngularJS? Eu vi aqui e aqui, mas não entendi como usá-los
b.) Como posso apresentar visualizações diferentes para o usuário com base em se o usuário está logado ou não na mesma urlhttp://myproject.com
Estou usando o angular.js pela primeira vez e realmente estou ficando confuso sobre como começar. Quaisquer conselhos e / ou recursos são muito apreciados.
fonte
Respostas:
Criei um repositório github resumindo este artigo basicamente: https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec
repositório Github ng-login
Plunker
Vou tentar explicar da melhor maneira possível, espero ajudar alguns de vocês aí:
(1) app.js: Criação de constantes de autenticação na definição do aplicativo
(2) Serviço de autenticação: Todas as funções a seguir são implementadas no serviço auth.js. O serviço $ http é usado para se comunicar com o servidor para os procedimentos de autenticação. Também contém funções de autorização, isto é, se o usuário tem permissão para realizar uma determinada ação.
(3) Sessão: Um singleton para manter os dados do usuário. A implementação aqui depende de você.
(4) Controlador pai: considere isso como a função "principal" de seu aplicativo, todos os controladores herdam deste controlador e é a espinha dorsal da autenticação deste aplicativo.
(5) Controle de acesso: para negar o acesso em certas rotas, 2 etapas devem ser implementadas:
a) Adicione os dados das funções permitidas para acessar cada rota, no serviço $ stateProvider do roteador ui como pode ser visto abaixo (o mesmo pode funcionar para o ngRoute).
b) Em $ rootScope. $ on ('$ stateChangeStart') adicione a função para evitar a mudança de estado se o usuário não estiver autorizado.
(6) Interceptador de autenticação: implementado, mas não pode ser verificado no escopo deste código. Após cada solicitação $ http, este interceptor verifica o código de status, se um dos itens abaixo for retornado, ele transmite um evento para forçar o usuário a efetuar login novamente.
PS Um bug com o preenchimento automático dos dados do formulário, conforme declarado no primeiro artigo, pode ser facilmente evitado adicionando-se a diretiva incluída em directives.js.
PS2 Este código pode ser facilmente ajustado pelo usuário, para permitir que diferentes rotas sejam vistas ou exibir conteúdo que não deveria ser exibido. A lógica DEVE ser implementada no lado do servidor, esta é apenas uma maneira de mostrar as coisas corretamente em seu ng-app.
fonte
authService.login() = [...]
esses colchetes representarão algo como$http.get(url, {uID, pwd}
? ~~ ok, olhei para o êmbolo, era como eu disse XDEu gosto da abordagem e implementei no lado do servidor sem fazer nada relacionado à autenticação no front-end
Procure o comentário de "Andrew Joslin".
https://groups.google.com/forum/?fromgroups=#!searchin/angular/authentication/angular/POXLTi_JUgg/VwStpoWCPUQJ
fonte
Eu respondi a uma pergunta semelhante aqui: Autenticação AngularJS + API RESTful
Eu escrevi um módulo AngularJS para UserApp que oferece suporte a rotas públicas / protegidas, reencaminhamento no login / logout, pulsações para verificações de status, armazena o token de sessão em um cookie, eventos, etc.
Você pode:
https://github.com/userapp-io/userapp-angular
Se você usar o UserApp, não terá que escrever nenhum código do lado do servidor para as coisas do usuário (mais do que validar um token). Faça o curso sobre Codecademy para experimentá-lo.
Aqui estão alguns exemplos de como funciona:
Como especificar quais rotas devem ser públicas e qual rota é o formulário de login:
A
.otherwise()
rota deve ser definida para onde você deseja que seus usuários sejam redirecionados após o login. Exemplo:$routeProvider.otherwise({redirectTo: '/home'});
Formulário de login com tratamento de erros:
Formulário de inscrição com tratamento de erros:
Link de logout:
<a href="#" ua-logout>Log Out</a>
(Termina a sessão e redireciona para a rota de login)
Acesse as propriedades do usuário:
As propriedades do usuário são acessadas usando o
user
serviço, por exemplo:user.current.email
Ou no modelo:
<span>{{ user.email }}</span>
Oculte elementos que só devem ser visíveis quando conectado:
<div ng-show="user.authorized">Welcome {{ user.first_name }}!</div>
Mostrar um elemento com base nas permissões:
<div ua-has-permission="admin">You are an admin</div>
E para se autenticar em seus serviços de back-end, use
user.token()
para obter o token de sessão e enviá-lo com a solicitação AJAX. No back-end, use a API UserApp (se você usar UserApp) para verificar se o token é válido ou não.Se precisar de ajuda, é só me avisar!
fonte
No angularjs, você pode criar a parte da IU, serviço, diretivas e todas as partes do angularjs que representam a IU. É uma boa tecnologia para trabalhar.
Como qualquer um que é novo nesta tecnologia e deseja autenticar o "Usuário", sugiro fazê-lo com o poder da API da web c #. para isso, você pode usar a especificação OAuth, que o ajudará a construir um mecanismo de segurança forte para autenticar o usuário. depois de construir o WebApi com OAuth, você precisa chamar essa api para o token:
e depois de obter o token, você solicita os recursos do angularjs com a ajuda do Token e acessa o recurso que é mantido seguro na Api da web com a especificação OAuth.
Por favor, dê uma olhada no artigo abaixo para obter mais ajuda: -
http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/
fonte
E o que acontecerá se o usuário pegar o JSON e mudar o bool para True?
Acho que você nunca deve confiar no lado do cliente para fazer esse tipo de coisa. Se o usuário não estiver autenticado, o servidor deve apenas redirecionar para uma página de login / erro.
fonte
fonte