我是AngularJS的新手,我开始创建一个示例应用程序,此应用程序有2个视图:
AngularJS虚拟应用程序一切正常,但是现在我开始在服务器端实现Login功能:
[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无法理解该路线,所以我无法继续前进。
关于如何解决此问题的任何线索,或者也许有更好的方法可以解决。
谢谢
您可以使用所需的任何身份验证/授权机制。但是,当您调用$http.get()
或$http.post()
希望收到JSON对象时。但是,如果未通过身份验证,您将被重定向到HTML页面的登录页面。因此,检查成功的代码将失败。
您需要创建一个新的自定义授权过滤器(例如MyAuthorize),以通过任何可用的技术(SimpleMembership,OAuth等)对用户进行身份验证/授权,如果身份验证失败,则RedirectResult
返回带有Error标志的JSON对象,而不是返回。然后,您可以在$http.get()
或之后检查该标志$http.post()
,并从客户端重定向用户。我们始终开发自己的通信服务,该服务会致电$http.get()
或$http.post
始终在那进行检查。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句