【发布时间】:2016-04-25 16:49:54
【问题描述】:
我不确定这是否是最佳实践,但我只是想在我拥有的网站上为我创建一个简单的登录系统。我不想使用数据库来存储一个密码,并且我在整个站点中使用 Angular。我不希望密码在 javascript 中以纯文本形式显示,任何人都可以看到。
我想到的一个解决方案是这样做:
$scope.loginValue = false;
$scope.loginFunction = function(password){
if(password == <?php echo 'test123' ?>){
$scope.loginValue = true;
}
}
有谁知道我如何能够做到这一点?现在我收到一个错误,因为 JavaScript 不喜欢我的 if 语句中的 '
我的其他想法是使用哈希,这是我以前从未做过的......是的,我对想法持开放态度。 :)
提前谢谢大家。
**********************下面更新**********************
所以,我最终选择了@musicfuel 建议的答案。我现在正试图让它发挥作用。按照建议,我的 login.php 文件具有以下内容:
<? echo $_POST['password'] == 'test123' ? true : false ?>
密码是来自用户输入的 $scope.password。当他们提交凭据时,它会调用此函数
$scope.loginFunction = function(){
loginService.getLogin().then(function(response){
console.log(response);
}, function(error){
$rootScope.loggedIn = false;
});
};
这里是登录服务:
myApp.controller('myController', ['$scope', '$rootScope', 'loginService', function myController($scope, $rootScope, loginService) {
.service('loginService', ['$http', '$q', '$rootScope', function($http, $q, $rootScope){
var getLogin = function() {
$http.post('login.php'), {
password: $scope.password
}, function (success) {
console.log("Login result: " + success);
}, function (error) {
console.log("Couldn't complete the login request.");
}
}
}])
}]);
当这个函数运行时,我得到以下错误:TypeError: loginService.getLogin is not a function 知道为什么找不到吗?
【问题讨论】:
-
“我不希望密码在 javascript 中可见,但我没有使用数据库或 API 调用” 您必须进行 API 调用或如果您不希望它出现在 JS 源代码中,请以某种方式计算该值。即使你设法让
<?php echo 'test123' ?>正常工作,它也会简单地将那个值放入发送到浏览器的 JS 源代码中。 -
我认为您应该阅读 stackoverflow.com/q/13840429/218196 以更好地了解客户端 JS 和服务器端 PHP 如何协同工作。
-
感谢@Felix Kling。决定制作一个简单的 login.php 文件。感谢您的帮助!
标签: javascript php angularjs password-protection