【发布时间】:2016-10-20 23:19:51
【问题描述】:
我是 AngularJS 的新手,我开始创建一个示例应用程序,这个应用程序有 2 个视图:
- 登录查看
- 欢迎观看
我的 AngularJS 虚拟应用程序一切正常,但现在我开始在服务器端实现登录功能:
[HttpPost]
public JsonResult Login(string credentials)
{
bool returnVal = false;
if (!string.IsNullOrEmpty(credentials))
{
FormsAuthentication.SetAuthCookie("DUMMY USER", true);
}
return Json(new
{
success = returnVal
},
JsonRequestBehavior.AllowGet);
}
在欢迎控制器上我有:
[Authorize]
public JsonResult GetPersons()
{
return Json(new
{
success = false
},
JsonRequestBehavior.AllowGet);
}
然后为了实现表单身份验证,我必须在 Web.Config 中设置:
<authentication mode="Forms">
<forms loginUrl="/login" name=".ASPXFORMSAUTH" protection="All" timeout="1" slidingExpiration="true" />-->
</authentication>
问题是这样做时它会重定向 URL,所以我收到以下错误:
GET http://localhost:21871/login?ReturnUrl=%2fperson%2fGetPersons 404 (Not Found)
因为 AngularJS 无法理解那条路线,所以我无法继续前进。
关于如何解决这个问题的任何线索,或者可能有更好的方法。
谢谢
【问题讨论】:
-
你做错了。您可以创建一个自定义授权过滤器,您应该在其中编写授权代码,如果失败,您应该返回一个带有标志(例如 AuthorizationError)的 JSON 响应,以便您的客户端知道授权失败。
-
所以,你告诉我的是,我应该向客户端发送一个令牌,而不是做所有那些垃圾表单身份验证,并且在每个帖子或获取我应该使用自定义检查服务器中的令牌在控制器中过滤?谢谢
标签: angularjs asp.net-mvc-4 asp.net-web-api angular-routing