angular认证系统(无登录页面的企业站点)

angular认证系统(无登录页面的企业站点),angular,token,Angular,Token,嘿,我们为公司建立了一个企业网站 当公司中的某个用户连接到该站点时,他有一个用户id 当id从客户端发送到后端(Node.JS)时,我会检查这个id是否在我的网络上,如果他在,他会得到一个访问令牌 问题是,在他获得访问令牌之后,客户端中的用户需要重新加载页面以获得访问权,如果他没有刷新页面,“Auth-Guard”会阻止他 在客户端处理这样的系统的最佳实践是什么?有很多方法可以解决这个问题 首先,如果您不希望服务在运行时使用令牌进行回复,那么您可以使用某种服务器推送技术(SignalR是.Net

嘿,我们为公司建立了一个企业网站

当公司中的某个用户连接到该站点时,他有一个用户id

当id从客户端发送到后端(Node.JS)时,我会检查这个id是否在我的网络上,如果他在,他会得到一个访问令牌

问题是,在他获得访问令牌之后,客户端中的用户需要重新加载页面以获得访问权,如果他没有刷新页面,“Auth-Guard”会阻止他


在客户端处理这样的系统的最佳实践是什么?

有很多方法可以解决这个问题

首先,如果您不希望服务在运行时使用令牌进行回复,那么您可以使用某种服务器推送技术(SignalR是.Net解决方案,我相信node js中也有类似的解决方案)

第二,当客户端发送id时,为什么不发送令牌作为回复?当您获得它时,将其保存在服务中并在本地缓存。然后,在执行保护时,从服务获取最新值并执行验证

请提供更多信息

我的建议是,使用一些已知且经过验证的身份验证方法,如oauth 2或openid connect,从您的身份提供商处获取令牌

在做任何其他事情之前,我建议您检查一下,这是单页应用程序身份验证的推荐方法

其他安全问题
  • 请注意,如果客户id是可猜测的,那么人们可以冒充他人,从而使您的spa不安全
  • 看看这个。Active directory通常是认证企业用户的最佳方式,因为它不基于客户端代码,很容易绕过
在项目中添加检查令牌的逻辑(从cookie或本地存储中,无论您存储在何处),如果存在,将令牌附加到请求中,这样每个请求都应该使用令牌(如果存在)触发

对于HttpInterceptor

现在,只要您获得令牌,只要在您设置令牌HttpInterceptor开始将访问令牌添加到它旁边激发的请求时,将令牌设置到位置(cookie或本地存储)。。。。快乐编码:)