Ich benutze Angular mit JWT-Token, um die Benutzer zu authentifizieren.Angular Login/Logout-Funktion nicht
Aber ich bin ein Problem, dass login()
, die $scope
zugewiesen ist, nicht aufgerufen wird. Jede Hilfe wäre willkommen.
app.js
Datei
var admin = angular.module('admin',['admin.core','admin.auth']);
angular.module('admin.core', ['ui.router','satellizer','ngResource','ngAnimate',
'ngStorage']);
admin.config(function($httpProvider, $stateProvider, $urlRouterProvider,
$authProvider, $provide, $locationProvider) {
$authProvider.loginUrl = '/api/authenticate';
$urlRouterProvider.otherwise('/login');
$locationProvider.html5Mode(true);
$stateProvider
.state('login', {
url: '/login',
templateUrl: '/partials/admin/login.html',
title : 'Admin Login'
})
});
angular.module("admin.auth", []).controller("AuthController",AuthController);
function AuthController($auth, $state, $http, $rootScope, $scope) {
console.log("Auth Called");
$scope.email='';
$scope.password='';
$scope.newUser={};
$scope.loginError=false;
$scope.loginErrorText='';
$scope.login = function() {
var credentials = {
email: $scope.email,
password: $scope.password
}
$auth.login(credentials).then(function() {
return $http.get('/api/authenticate/user');
}, function(error) {
$scope.loginError = true;
$scope.loginErrorText = error.data.error;
}).then(function(response) {
if(typeof response != "undefined"){
var user = JSON.stringify(response.data.user);
localStorage.setItem('user', user);
$rootScope.authenticated = true;
$rootScope.currentUser = response.data.user;
$scope.loginError = false;
$scope.loginErrorText = '';
$state.go('dashboard');
}
});
}
$scope.logout = function() {
$auth.logout().then(function() {
// Remove the authenticated user from local storage
localStorage.removeItem('user');
// Flip authenticated to false so that we no longer
// show UI elements dependant on the user being logged in
$rootScope.authenticated = false;
// Remove the current user info from rootscope
$rootScope.currentUser = null;
$state.go('login');
});
}
}
Und ich versuche AuthConrtoller
wie als
<body ng-controller="AuthController">
<ui-view></ui-view>
</body>
und login.html
ist
<form name="loginForm" autocomplete="off" novalidate>
<md-input-container class="md-block">
<label for="email">Username</label>
<input type="text" name="email" required="required" ng-model="email" md-no-asterisk/>
<div ng-messages="loginForm.email.$error" role="alert">
<div ng-message="required">Username is required</div>
</div>
</md-input-container>
<md-input-container class="md-block">
<label for="password">Password</label>
<input type="password" name="password" required="required" ng-model="password" md-no-asterisk/>
<div ng-messages="loginForm.password.$error" role="alert">
<div ng-message="required">Password can not be blank</div>
</div>
</md-input-container>
<md-button type="submit" class="md-primary md-raised" ng-disabled="!loginForm.$valid" ng-click="login()">Login</md-button>
</form>
wo das Login genannt? Fügen Sie den Code – Sajeetharan
aktualisiert Login html sowie – Gags
Was ist? verifizieren, dass ng-click es unterstützt? IE könnte nicht. Versuchen Sie, etwas anderes zu tun? –
Joppe