我正在使用我的MVC应用程序中的登录身份验证。我在这个问题上努力了很长时间。我登录成功后,我想重定向到主页,但我的代码$ location.path('/ home')什么都不做。后来,我发现它总是会到我的默认路径,这是在我的routeprovider app.js中给出的。
请人给我建议我做了什么错..
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
});
}
});
您确定没有错误吗?你的错误处理程序是无操作的。另外,你确定为了达到'$ location.path('/ Home')'满足条件响应吗? – Phix
@Phix:是的,符合条件。在我的路由配置中,它始终处于“其他”状态。 –
为什么这么多'redirectTo'? – Phix