Je me demande pourquoi il semble être populaire que la page de connexion d'un SPA soit une page distincte qui n'est pas la page du SPA (comme dans le cas des données chargées et envoyées via des requêtes ajax)?
Je ne pense qu'à la sécurité, mais je ne peux pas penser à une raison de sécurité spécifique. Je veux dire que la seule chose qui me vient à l'esprit est que si votre page de connexion fait partie du SPA, elle envoie le nom d'utilisateur / mot de passe via ajax qui peut être vu par des outils tels que Firebug ou Web Inspector, même si vous l'envoyez normalement Demande POST, il existe d'autres outils qui peuvent facilement capturer ces données (comme violoneux, httpscoop, etc ...).
Y a-t-il quelque chose qui me manque?
javascript
architecture
ryanzec
la source
la source
Réponses:
Vraisemblablement, c'est pour économiser le chargement d'un tas d'actifs côté client (comme les cadres JavaScript lourds, les images, etc. ) qui ne sont requis que par l'application.
Il existe des moyens plus sophistiqués pour atteindre un objectif de performance similaire (voir " Malte Ubl & John Hjelmstad: Une nouvelle approche efficace du chargement JavaScript - JSConf EU 2012 "), mais cela est assez rapide à mettre en œuvre et sans doute tout aussi efficace, surtout si votre application Web utilise de toute façon presque tous vos actifs.
Vous pouvez le voir à l'état sauvage dans un site comme la http://infogr.am beta:
la source
Je pense qu'il y a des arguments raisonnables pour ou contre, et je dirais que la technologie joue également un rôle dans la décision.
On pourrait faire valoir que le fait d'avoir une «page» de connexion distincte permet d'utiliser la «sécurité de répertoire». En général, tout le monde peut voir la "page" de connexion, mais seuls les utilisateurs authentifiés peuvent voir la "page" de l'application et son "répertoire". Les itinéraires peuvent également être verrouillés, où / Account / est différent de / App / et chacun a son propre "profil" de sécurité.
De plus, si vous utilisez une approche SPA et que vous mélangez l'authentification avec l'expérience d'application, la logique pourrait être compliquée. Au lieu de supposer que l'utilisateur est "connecté parce qu'il est ici", vous devez constamment vérifier son état d'authentification et demander "si cet utilisateur est ici".
De plus, la page de connexion est généralement sur le site destiné aux consommateurs .. vous allez sur www.yourapp.com et elle contient des informations, des contacts, du support, etc. l'authentification, vous pouvez rediriger vers une multitude de cibles ..
La raison pour laquelle je garde une page de connexion distincte et pourquoi j'ai en fait une application entièrement différente pour mon site "destiné aux consommateurs" est parce que je peux exposer très peu aux utilisateurs non authentifiés. Par hasard, un crétin commence à frapper sur ma page de connexion, je ne veux pas que cela affecte le côté application des choses .. même si la connexion ne fait qu'une simple recherche d'authentification .. cela m'aide en quelque sorte à empêcher les bozo d'affecter mon l'expérience des utilisateurs .. Pire cas, mon site consommateur tombe en panne et personne ne peut se connecter, mais au moins les utilisateurs connectés ne le sauront pas et leur expérience ne commencera pas à ralentir .. Je ne dis pas que c'est le choix à l'épreuve des balles .. mais au moins j'ai isolé le risque pour la zone non authentifiée ..
la source
Une des raisons pour cela est que vous pouvez ensuite utiliser des sessions normales basées sur les cookies. L'utilisateur se connecte, la réponse envoie un cookie avec la page principale initiale ... puis tous les appels ajax ultérieurs renvoient le cookie au serveur.
la source
Je vois quelques raisons de le faire:
la source