问题标签 [angularjs-authentication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5695 浏览

angularjs - AngularJS 和 Firebase 身份验证

我想使用 Firebase 后端向我的 AngularJS 应用程序添加身份验证机制。要求很简单:

  • 经过身份验证的用户应该能够访问任何页面。
  • 如果未经身份验证的用户访问/some_page(除 之外的任何页面/login),他们应该被重定向到/login. 一旦他们输入正确的凭据,他们应该被重定向回/other_page.

此处描述的可能解决方案做出以下假设:

我的解决方案假定以下服务器端行为:对于每个 /resources/* 调用,如果用户未授权,则响应 401 状态

但是,我不确定在使用 Firebase 作为后端时是否可以强制执行此行为。

任何实现此类 AngularJS+Firebase 集成的帮助和/或示例将不胜感激!

0 投票
3 回答
4451 浏览

angularjs - AngularJS: How to hide the template content until user is authenticated?

My app has 2 pages: main.html and login.html. When not authenticated users go to /main they should be redirected to /login.

The problem is that main.html is rendered first, and after a second or so, when user authentication fails, login.html is rendered.

How could I prevent from main.html to be rendered until authentication succeeds?

Here is the relevant code (CoffeeScript):


0 投票
1 回答
11201 浏览

redirect - 用户登录后重定向

我对 Angular 还是很陌生,现在我只是想设置我所有的路线并按照我的意愿工作。

设置: 当用户导航到某些页面(/settings在本例中)时,应用程序应检查是否有用户已登录。如果有,则照常继续。否则,用户应该转到登录页面 ( /login)。

我想要什么: 用户成功登录后,他们应该转到他们最初尝试访问的页面(/settings

我的问题: 是否有一种“角度方式”来记住用户试图去哪里?

相关代码:

应用程序.js

登录.js

非常感谢 John Lindquist的视频让我走到了这一步。

0 投票
5 回答
41267 浏览

javascript - AngularJS | 在加载之前处理路由

我希望通过外部服务为我的路由创建一个简单的身份验证检查。

我定义了路由对象的访问要求:

然后,我检查我是否在$routeChangeStart活动中获得许可。

实际上,它有效-
如果用户未通过身份验证,则将他移动到登录页面,如果他已通过身份验证,但路由仅适用于匿名用户,则将其移动到另一个页面,等等。

但是 - 这种重定向实际上是在控制器和模板加载之后发生的! 即使我没有经过身份验证,它也会导致我的控制器对我的 REST API 做一些不必要的请求。

在他们处理之前如何处理路线?

0 投票
1 回答
934 浏览

angularjs - angularjs拦截器$broadcast不起作用

我正在玩弄 http://ngmodules.org/modules/http-auth-interceptor的代码, 我想知道为什么

不会触发控制器中的警报

编码:

更新

安全.php

有什么问题?

0 投票
4 回答
32978 浏览

angularjs - locationChangeStart 和防止路线改变

我正在尝试创建基本验证用户是否可以访问某些路线。我在这方面取得了进展,但有一件事我无法弄清楚。

我正在使用 $locationChangeStart 来监控路线变化。场景是: 1. 如果用户已登录,则允许他访问所有路由,除了 auth 路由(登录、注册)。我通过从我的 AuthFactory 2 调用方法 isAuthenticated() 来检查这一点。如果用户没有登录,那么他只能访问登录和注册路由。应阻止任何其他路由,在这种情况下应将用户重定向到登录。

困扰我的事情是具有 preventDefault() 的事情。如果应用程序使用 preventDefault() 到达代码,location.path()那么之后的代码将无法正常工作。

但是,如果我删除event.preventDefault(),则location.path()有效。这个问题是我需要防止,以防非登录尝试访问一些非身份验证页面。

基本上,我希望能够根据请求的路线阻止或重定向。这样做的正确方法是什么?

0 投票
4 回答
85931 浏览

angularjs - 使用 AngularJS 进行身份验证、使用 REST Api WS 进行会话管理和安全问题

我开始使用 angularJS 开发一个网络应用程序,但我不确定一切是否安全(客户端和服务器端)。安全性基于单个登录页面,如果凭据检查正常,我的服务器会发回具有自定义时间有效性的唯一令牌。所有其他 REST api 都可以通过此令牌访问。应用程序(客户端)浏览到我的入口点 ex:https ://www.example.com/home.html用户插入凭据并接收回一个唯一令牌。此唯一令牌使用 AES 或其他安全技术存储在服务器数据库中,它不是以清晰的格式存储的。

从现在开始,我的 AngluarJS 应用程序将使用此令牌对所有暴露的 REST Api 进行身份验证。

我正在考虑将令牌临时存储在自定义 http cookie 中;基本上,当服务器验证凭据时,它会发回一个新的 cookie Ex。

cookie 设置了安全仅 HTTP标志。Http协议直接管理新的cookie并存储。连续的请求会以新的参数呈现 cookie,而不需要用 javascript 管理和存储它;在每次请求时,服务器都会使令牌无效并生成一个新令牌并将其发送回客户端 --> 使用单个令牌防止重放攻击。

当客户端从任何 REST Api 接收到 HTTP 状态401 未经授权的响应时,角度控制器会清除所有 cookie 并将用户重定向到登录页面。

我应该考虑其他方面吗?将令牌存储在新的 cookie 中还是 localStorage 中更好?关于如何生成独特的强令牌的任何提示?

编辑(改进):

  • 我决定使用 HMAC-SHA256 作为会话令牌生成器,有效期为 20 分钟。我生成一个随机的 32 字节 GUID,附加时间戳并通过提供 40 字节密钥来计算 HASH-SHA256。由于令牌的有效性非常小,因此几乎不可能发生冲突。
  • Cookie 将具有域和路径属性以提高安全性。
  • 不允许多次登录。
0 投票
10 回答
221925 浏览

javascript - AngularJS- 每个路由和控制器中的登录和身份验证

我有一个使用 yeoman、grunt 和 bower 创建的 AngularJS 应用程序。

我有一个登录页面,其中有一个检查身份验证的控制器。如果凭据正确,我将重新路由到主页。

应用程序.js

登录控制器.js

在主页上我有

在 中loginController,我检查登录信息,如果成功,我在服务工厂中设置用户对象。我不知道这是否正确。

我需要的是,当用户登录时,它会在用户对象中设置一些值,以便所有其他页面都可以获得该值。

每当发生任何路由更改时,控制器都应检查用户是否已登录。如果没有,它应该重新路由到登录页面。此外,如果用户已经登录并返回该页面,它应该转到主页。控制器还应该检查所有路由的凭据。

我听说过 ng-cookies,但我不知道如何使用它们。

我看到的许多示例都不是很清楚,它们使用了某种访问角色或其他东西。我不想那样。我只想要一个登录过滤器。有人可以给我一些想法吗?

0 投票
2 回答
1450 浏览

javascript - AngularJS - 登录并关闭选项卡后,它不会重定向到主页

我用 yeoman、grunt 和 bower 创建了一个 angularJS 应用程序。我尝试了一个简单的登录示例。登录后会跳转到首页。对于任何路线更改,它将检查用户是否已登录。如果登录,它将重定向到主页或特定路由,否则重新路由到登录页面。这一切对我来说都很好。

这是app.js

这是我的loginControler.js

一切对我来说都很好。

由于我使用的是 grunt,所以 url 就像http://localhost:9000/#/login 登录后它会转到主页,如果我输入 like http://localhost:9000/#/loginorhttp://localhost:9000/#/register或任何其他 url。如果我注销并尝试任何页面,它就会登录。

问题是,当我尝试登录http://localhost:9000/或关闭选项卡并再次打开 url 后,它将进入登录页面(意味着loggedUser 为空)。

为什么会这样?我该如何解决?

我需要设置一些cookies或其他东西吗?如果是这样,怎么做?

0 投票
1 回答
1162 浏览

angularjs - 设置 http 授权标头时,AngularJS 应用程序崩溃

我想向 twitter api 发出请求并获取当前登录的用户源。

我用“apigee”尝试了 twitter api,一切正常。即使将授权标头从“apigee”复制到“邮递员”中,我也会取回数据。

好吧,但是当我尝试在我的 angular-app 中发出 http-request 时,整个应用程序停止工作。在浏览器中只有输出“{{message}}”,控制台打印两条错误消息:

我的应用程序中的代码如下所示

谁能帮助我或告诉我我做错了什么。凯文