我正在使用MVC应用程序中的登录身份验证。我正在努力解决这个问题。登录成功后,我想重定向到主页,但我的代码$ location.path(' / home')什么都不做。后来我发现它始终是我的默认路径,它在app.js中的routeprovider中给出。
请有人建议我犯了什么错误..
app.js
var app = angular.module('myApp', [
"toastr",
"ui.bootstrap",
"ngRoute",
"datatables",
"ngMaterial",
"ngMessages",
"material.svgAssetsCache"
]);
app.config(["$routeProvider", "$locationProvider",
function ($routeProvider, $locationProvider) {
console.log('$routeProvider' + JSON.stringify($routeProvider));
console.log('$locationProvider' + $locationProvider);
//return
$routeProvider.when("/login",
{
redirectTo: "/login"
}).when("/Home",
{
redirectTo: "~/Home/Index/"
//controller: "MyCtrl"
}).when("/user",
{
redirectTo: "/User/"
}).when("/adduser",
{
redirectTo: "/User/User"
}).when("/role",
{
redirectTo: "/Role/"
}).when("/addrole",
{
redirectTo: "/Role/AddRole"
}).when("/settings",
{
redirectTo: "/Settings/"
}).when("/Editsettings",
{
redirectTo: "/Settings/Edit/"
}).when("/uploadData",
{
redirectTo: "/UploadDataFile/"
}).otherwise(
{
redirectTo: '/Test/Index'
});
$locationProvider.html5Mode({
enabled: true,
requireBase: false
}).hashPrefix('!'); //Remove the '#' from URL.
}])
Login.js
app.controller('LoginCtrl', function ($scope, $location, $http, $window) {
$scope.ddlDomain = [ 'AS', 'EU', 'LA'];
$scope.Domain = $scope.ddlDomain[0].value;
// send to your controller
$scope.LoginClick = function () {
var User = {
UserId: $scope.UserId,
Password: $scope.Password,
Domain: $scope.Domain
}
$http({
method: "post",
url: "/Login/SSOLogin",
data: { 'user': User }
}).then(function (response) {
if ((response.data.Message == "") || (response.data.Message == null)) {
$location.path('/Home');
if (!$scope.$$phase) {
//$digest or $apply
$scope.$apply();
}
} else {
$scope.errormsg = response.data.Message;
}
// handle success here
}, function (response) {
console.log("err" + response.data);
// handle error here
});
}
});
答案 0 :(得分:0)
此配置:
$routeProvider
.when("/login", {
redirectTo: "/login"
})
.when("/Home", {
redirectTo: "~/Home/Index/"
//controller: "MyCtrl"
})
您似乎正在按预期重定向到/Home
,但您会立即重定向到~/Home/Index/
,这不存在,因此第三次重定向到您的otherwise
块
修改强>
发表评论:
但我有主页/索引页面。
哦,对不起。我已经尝试过删除〜,然后也没有工作
我的家伙... /Home/Index/
不是上述配置中定义的路线。
根据此路线配置:
$routeProvider.when("/Home", {
redirectTo: "~/Home/Index/"
//controller: "MyCtrl"
})
您正在从/Home
重定向到名为/Home/Index
的不存在的路由,该路由再次未在您发布的配置中定义。
这是Angular所说的:
`/Home` =>
"Ok, when the user hits this route,
I need to redirect them to `/Home/Index` because
that's what I was told to do."
`/Home/Index` => "Hmm, I don't see that route configured. Exiting.
=> Fall back to my `otherwise` block."
你说
但我有主页/索引页面。
这是什么意思?您在名为“Home”的目录中有一个名为“index”的文档? AngularJS不会像这样工作。