Porównaj ceny domen i usług IT, sprzedawców z całego świata

Uwierzytelnianie AngularJs + php


Cześć Zacząłem uczyć się AngularJs i teraz próbuję stworzyć mój moduł logowania za pomocą angular i php, ale mam pewne problemy. Przejrzałem wiele tutoriali, ale żaden z nich nie był pomocny w moim przypadku, więc oto co mam: controllers.js:
var controllers = angular.module('controllers', []); controllers.controller('loginController', ['$scope', '$http', 'UserService', function(scope, $http, User) {
scope.main = [
{username: '', password: ''}
]scope.login = function(){
var config = {
url: '../auth/login.php',
method: 'POST',
data: {
username: scope.main.username,
password: scope.main.password
},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
} $http(config)
.success(function(data,status,headers,config){
if(data.status){
//succefull login
User.isLogged = true;
User.username = data.username;
}
else{
User.isLogged = false;
User.username = '';
}
})
.error(function(data,status,headers,config){
User.isLogged = false;
User.username = '';
});
}
}])

auth.js:
var services = angular.module('services', []);services.factory('UserService', [function(){
var sdo = {
isLogged: false,
username: ''
};
return sdo;
}]);

login.php:
$username = $_POST['username'];
if($username){
return "Logged";
}else{
return false;
}

i html:
<div class="col-xs-12" id="loginCol" ng-controller="loginController">
<form ng-submit='login()' name="form" novalidate>
<div class="form-group">
<label for="username" class="sr-only">Username</label>
& < input type = "text" ng-model = "scope.main.username" class = "form-control" id = "username" placeholder = "Have ..."/& >
<label for="password" class="sr-only">Password</label>
& < input type = "hasło" ng-model = "scope.main.password" class = "form-control" id = "hasło" placeholder = "Hasło ..."/& >
<div class="form-group pull-right">
<button type="button" class="btn btn-primary">Login</button>
<button type="button" class="btn btn-default">Register</button>

</form>

W tym przypadku chcę tylko, aby użytkownik wprowadził coś w polu wprowadzania nazwy użytkownika i kliknął przycisk logowania, a jeśli wywołanie login.php się powiedzie, zwróci jakiś komunikat. Problem w tym, że w tak napisanym kodzie pojawił się błąd „'loginController' nie jest funkcją, ma niejednoznaczność”, jak to naprawić?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


(Ujawnienie: jestem jednym z twórców UserApp

)
Możesz wypróbować usługę innej firmy

UserApp
https://www.userapp.io
razem z

moduł
https://github.com/userapp-io/userapp-angular
AngularJS .
Sprawdź S.

przewodnik startowy
https://github.com/userapp-io/userapp-angular
pracuj lub jedź

Kurs Codecademy
http://www.codecademy.com/cour ... 3k... Oto kilka przykładów, jak to działa:
  • Formularz logowania z obsługą błędów :
    <form ua-login ua-error="error-msg"> <input name="login" placeholder="Username"> <input name="password" placeholder="Password" type="password"> <button type="submit">Log in</button> <p id="error-msg"></form>
  • Formularz rejestracyjny z obsługą błędów :
    <form ua-signup ua-error="error-msg"> <input name="first_name" placeholder="Your name"> <input name="login" ua-is-email placeholder="Email"> <input name="password" placeholder="Password" type="password"> <button type="submit">Create account</button> <p id="error-msg"></form>
    ua-is-email
    oznacza, że ​​nazwa użytkownika jest taka sama jak email.
  • Jak określić, które trasy mają być publiczne, a które należy wprowadzić za pomocą formularza logowania do systemu:
    $routeProvider.when('/login', {templateUrl: 'partials/login.html', public: true, login: true});$routeProvider.when('/signup', {templateUrl: 'partials/signup.html', public: true});
    Trasa
    .otherwise ()
    powinna być ustawiona na miejsce, do którego chcesz przekierować użytkowników po zalogowaniu. Przykład:
    $routeProvider.otherwise({redirectTo: '/home'});
  • Link do wyjścia Systemy:
    [url="#" ua-logout>Log Out[/url]
  • Dostęp do właściwości użytkownika : Dostęp do informacji Użytkownika odbywa się za pomocą usługi
    user
    , na przykład:
    user.current.email
    Lub w szablonie:
    & < span & > {{user.email}} & </span & >
  • Ukryj elementy, które powinny być widoczne tylko podczas wchodzenia system:
    <div ng-show="user.authorized">Welcome {{ user.first_name }}!
  • Pokaż element na podstawie uprawnień :
    <div ua-has-permission="admin">You are an admin

Aby uwierzytelnić się w usługach wewnętrznych, po prostu użyj funkcji
user.token ()
, aby uzyskać token sesji i wysłać go z żądaniem AJAX. W tle skorzystaj z biblioteki

UserApp API
https://app.userapp.io/#/docs/
od

biblioteka
https://app.userapp.io/#/docs/libs/php/
PHP sprawdzić, czy token jest ważny, czy nie.
Jeśli potrzebujesz pomocy, daj mi znać.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Utworzyłeś aplikację
var controllers = angular.module('controllers', []);

ale nie użyłem go w kodzie html, dodaj atrybut ng-app do opakowania div
<div class="col-xs-12" ng-app="controllers" id="loginCol" ng-controller="loginController">

drugi problem polega na tym, że próbujesz przechwycić zdarzenie przesyłania, ale nie przesyłasz formularza, zamiast tego użyj typu
submit
button
<button type="submit" class="btn btn-primary">Login</button>

lub dodaj atrybut
ng-click = "login ()"
do przycisku i usuń
ng-submit = 'login ()'
z formularza

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się