我正在使用角度js和ASP.NET Web Api 2后端创建一个应用程序。我正在试图找出如何进行身份验证的部分。我打算使用不记名代币而不是cookie,因为它看起来像是一种更现代的方式。我将有一个用户登录表单,他们可以输入他们的密码和用户名。我应该只是将用户名和密码传递给我的Web Api并让它返回一个持票人令牌然后将它存储在localStorage中吗?如何在每个后续请求中传递该令牌,以便我可以访问受保护的资源?我是否需要任何特殊的角度模块进行此类身份验证?
答案 0 :(得分:1)
您可以在Web Api中使用Anti-forgery Token。 服务器对用户进行身份验证。来自服务器的响应包括身份验证cookie。 服务器在响应中包含两个令牌。一个令牌作为cookie发送。另一个放在隐藏的表单字段中。令牌是随机生成的,因此攻击者无法猜测值。
当客户端提交表单时,它必须将两个令牌发送回服务器。客户端将cookie令牌作为cookie发送,并在表单数据中发送表单令牌。 (当用户提交表单时,浏览器客户端会自动执行此操作。)
如果请求不包含两个令牌,则服务器不允许该请求。 在Angular中,您必须在每个http POST请求中传递隐藏字段参数(Token)。