Soy nuevo en AngularJS y revisé su tutorial y lo sentí.
Tengo un backend para mi proyecto listo donde cada uno de los REST
puntos finales necesita ser autenticado.
Lo que quiero hacer
a.) Quiero tener una sola página para mi proyecto http://myproject.com
.
b.) Una vez que un usuario ingresa a la URL en el navegador, según si el usuario ha iniciado sesión o no, se le presenta una página / vista de inicio o una página / vista de inicio de sesión con la misma URL http://myproject.com
.
c.) si un usuario no ha iniciado sesión, completa el formulario y el servidor establece una USER_TOKEN
sesión, por lo que todas las solicitudes posteriores a los puntos finales se autenticarán segúnUSER_TOKEN
Mis Confusiones
a.) ¿Cómo puedo manejar la autenticación del lado del cliente usando AngularJS? Vi aquí y aquí, pero no entendí cómo usarlos
b.) ¿Cómo puedo presentar diferentes vistas al usuario en función de si el usuario está conectado o no con la misma URL?http://myproject.com
Estoy usando angular.js por primera vez y realmente me confundo sobre cómo comenzar. Cualquier consejo y / o recurso son muy apreciados.
fuente
Respuestas:
He creado un repositorio de github que resume este artículo básicamente: https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec
ng-login repositorio de Github
Plunker
Intentaré explicarlo lo mejor posible, espero ayudar a algunos de ustedes:
(1) app.js: creación de constantes de autenticación en la definición de la aplicación
(2) Servicio de autenticación: todas las funciones siguientes se implementan en el servicio de autenticación. El servicio $ http se utiliza para comunicarse con el servidor para los procedimientos de autenticación. También contiene funciones de autorización, es decir, si el usuario puede realizar una determinada acción.
(3) Sesión: Un singleton para mantener los datos del usuario. La implementación aquí depende de ti.
(4) Controlador principal: considere esto como la función "principal" de su aplicación, todos los controladores heredan de este controlador y es la columna vertebral de la autenticación de esta aplicación.
(5) Control de acceso: Para denegar el acceso en determinadas rutas, se deben implementar 2 pasos:
a) Agregue datos de los roles permitidos para acceder a cada ruta, en el servicio $ stateProvider del enrutador ui como se puede ver a continuación (lo mismo puede funcionar para ngRoute).
b) En $ rootScope. $ on ('$ stateChangeStart') agregue la función para evitar el cambio de estado si el usuario no está autorizado.
(6) Interceptor de autenticación: esto está implementado, pero no se puede verificar en el alcance de este código. Después de cada solicitud $ http, este interceptor comprueba el código de estado, si se devuelve uno de los siguientes, emite un evento para obligar al usuario a iniciar sesión nuevamente.
PD: Un error con el autocompletado de datos del formulario como se indica en el primer artículo puede evitarse fácilmente agregando la directiva que se incluye en directives.js.
PS2 El usuario puede modificar este código fácilmente para permitir que se vean diferentes rutas o mostrar contenido que no estaba destinado a mostrarse. La lógica DEBE implementarse en el lado del servidor, esta es solo una forma de mostrar las cosas correctamente en su ng-app.
fuente
authService.login() = [...]
esos corchetes representarán algo como$http.get(url, {uID, pwd}
? ~~ ok, miré en el plunker, fue como dije XDMe gusta el enfoque y lo implementé en el lado del servidor sin hacer nada relacionado con la autenticación en el front-end
Busque el comentario de "Andrew Joslin".
https://groups.google.com/forum/?fromgroups=#!searchin/angular/authentication/angular/POXLTi_JUgg/VwStpoWCPUQJ
fuente
Respondí una pregunta similar aquí: Autenticación AngularJS + API RESTful
Escribí un módulo AngularJS para UserApp que admite rutas protegidas / públicas, redireccionamiento al iniciar sesión / cerrar sesión, latidos para verificaciones de estado, almacena el token de sesión en una cookie, eventos, etc.
Podrías:
https://github.com/userapp-io/userapp-angular
Si usa UserApp, no tendrá que escribir ningún código del lado del servidor para las cosas del usuario (más que validar un token). Realice el curso de Codecademy para probarlo.
A continuación, se muestran algunos ejemplos de cómo funciona:
Cómo especificar qué rutas deben ser públicas y qué ruta es el formulario de inicio de sesión:
La
.otherwise()
ruta debe establecerse a donde desea que sus usuarios sean redirigidos después de iniciar sesión. Ejemplo:$routeProvider.otherwise({redirectTo: '/home'});
Formulario de inicio de sesión con manejo de errores:
Formulario de registro con manejo de errores:
Enlace de cierre de sesión:
<a href="#" ua-logout>Log Out</a>
(Finaliza la sesión y redirige a la ruta de inicio de sesión)
Acceder a las propiedades del usuario:
Se accede a las propiedades del usuario mediante el
user
servicio, por ejemplo:user.current.email
O en la plantilla:
<span>{{ user.email }}</span>
Ocultar elementos que solo deberían estar visibles cuando inicie sesión:
<div ng-show="user.authorized">Welcome {{ user.first_name }}!</div>
Muestre un elemento basado en permisos:
<div ua-has-permission="admin">You are an admin</div>
Y para autenticarse en sus servicios de back-end, solo use
user.token()
para obtener el token de sesión y enviarlo con la solicitud AJAX. En el back-end, use la API de UserApp (si usa UserApp) para verificar si el token es válido o no.Si necesita ayuda, ¡hágamelo saber!
fuente
En angularjs puede crear la parte de la interfaz de usuario, el servicio, las directivas y toda la parte de angularjs que representa la interfaz de usuario. Es una buena tecnología para trabajar.
Como cualquiera que sea nuevo en esta tecnología y quiera autenticar al "Usuario", sugiero hacerlo con el poder de c # web api. para eso, puede usar la especificación OAuth que lo ayudará a construir un mecanismo de seguridad sólido para autenticar al usuario. una vez que construya WebApi con OAuth, debe llamar a esa api para token:
y una vez que obtiene el token, solicita los recursos de angularjs con la ayuda de Token y accede al recurso que se mantuvo seguro en la API web con la especificación OAuth.
Por favor, eche un vistazo al siguiente artículo para obtener más ayuda: -
http://bitoftech.net/2014/06/09/angularjs-token-authentication-using-asp-net-web-api-2-owin-asp-net-identity/
fuente
¿Y qué sucede si el usuario detecta JSON y cambia el bool a True?
Creo que nunca debes confiar en el lado del cliente para hacer este tipo de cosas. Si el usuario no está autenticado, el servidor debería redirigirlo a una página de inicio de sesión / error.
fuente
fuente