Asp.net mvc 4 ASP.NETMVC+;Web Api+;安格拉斯
我正在构建一个ASP.NETMVC应用程序,它可以在Web和jQueryMobile中工作。因此,我正在为Web和JQuery移动应用程序创建一个单独的视图。我将所有主要的业务逻辑服务都作为Web Api调用,由两个客户端使用AngularJs调用,到目前为止,AngularJs运行良好 现在我想在应用程序中引入安全性,并意识到基本身份验证是最快的方法,当我环顾四周时,我发现非常好的帖子帮助我以最小的努力构建了相同的功能。以下是我主要使用的3个链接: 对于客户端Asp.net mvc 4 ASP.NETMVC+;Web Api+;安格拉斯,asp.net-mvc-4,angularjs,asp.net-web-api,Asp.net Mvc 4,Angularjs,Asp.net Web Api,我正在构建一个ASP.NETMVC应用程序,它可以在Web和jQueryMobile中工作。因此,我正在为Web和JQuery移动应用程序创建一个单独的视图。我将所有主要的业务逻辑服务都作为Web Api调用,由两个客户端使用AngularJs调用,到目前为止,AngularJs运行良好 现在我想在应用程序中引入安全性,并意识到基本身份验证是最快的方法,当我环顾四周时,我发现非常好的帖子帮助我以最小的努力构建了相同的功能。以下是我主要使用的3个链接: 对于客户端 :查找401错误并打开登录页面的
[Authorize]
方法/控制器,它会在MVC上再次抛出表单身份验证视图,即使API已经设置了身份验证头
所以我有两个问题:
[ActionName(“MyWorkspace”)][HttpGet]
”修饰了它
在我的菜单点击时,我调用了一个角度JS函数
$scope.enterWorkspace = function(){
$http.get('/api/execute/Registration/MyWorkspace?data=""')
.then(
// success callback
function(response) {
console.log('redirect Route Received:', response);
},
// error callback
function(response) {
console.log('Error retrieving the Redirect path:',response);
}
);
}
我在chrome开发者工具中看到,它被重定向,状态为200 OK,但视图没有刷新
如果不可能共享WebApi和MVC身份验证,我们是否至少可以让这个重定向正常工作
编辑
遵循Kaido的建议,找到了另一个解释如何创建自定义CustomBasicAuthorizeAttribute的方法
现在我可以在下面的主控制器上调用该方法:用“[HttpPost][CustomBasicAuthorize]”装饰
public ActionResult MyWorkspace()
{
var redirectUrl = "/";
if (System.Threading.Thread.CurrentPrincipal.IsInRole("shipper"))
{
redirectUrl = "/shipper/";
}
else if(System.Threading.Thread.CurrentPrincipal.IsInRole("transporter"))
{
redirectUrl = "/transporter/";
}
return RedirectToLocal(redirectUrl);
}
同样,它在一定程度上起作用,也就是说,当第一次调用时,它会进入我上面的重定向方法,但是当重定向调用返回时,它会再次丢失标题
我能做些什么来确保重定向的呼叫也得到正确的报头设置吗
顺便说一句,现在我的菜单点击如下所示:
$scope.enterMyWorkspace = function(){
$http.post('/Home/MyWorkspace')
.then(
// success callback
function(response) {
console.log('redirect Route Received:', response);
},
// error callback
function(response) {
console.log('Error retrieving the Redirect path:',response);
}
);
}
这最终归结为以下URL:http://127.0.0.1:81/Account/Login?ReturnUrl=%2fshipper%2f
问候
Kiran属性
[Authorize]
使用表单身份验证,但是创建自己的身份验证很容易
BasicAuthenticationAttribute
与第三个链接相同
然后将
[BasicAuthentication]
放在MVC控制器上,而不是[Authorize]
根据您的建议,我在我的原始帖子中对此进行了更新,但现在的问题是重定向回调再次缺少标题,有没有办法强制浏览器再次添加身份验证标头?
$scope.enterMyWorkspace = function(){
$http.post('/Home/MyWorkspace')
.then(
// success callback
function(response) {
console.log('redirect Route Received:', response);
},
// error callback
function(response) {
console.log('Error retrieving the Redirect path:',response);
}
);
}