我知道还有其他关于这个问题的问题,但我已经准备好了10个以上的答案并尝试了每一个答案,但没有一个能为我工作。
当我尝试加载外部普通javascript文件以在JWT中进行编码时,我收到此错误:Uncaught ReferenceError: require is not defined
。
这是我尝试在require()
中添加的文件:https://github.com/hokaccha/node-jwt-simple我已使用npm
下载。
在我的代码中,我尝试了很多东西。
main.js
中包含grunt concact; <head>
; <script src="path/to/folder"></script>
内手动加载
通过所有这些尝试,我得到了同样的错误。我做错了什么?
这是我现在正在使用的代码:
的index.html
<head>
<script type="text/javascript" src="dist/js/angular.min.js"></script>
<script type="text/javascript" src="dist/js/ui-router.min.js"></script>
<script type="text/javascript" src="dist/js/jwt.js"></script>
[... rest of head ...]
appCtrl.js (稍后将使用该应用的其余部分进行构建)
.controller('MainCtrl',
['$rootScope', '$scope', '$state',
function($rootScope, $scope, $state) {
var jwt = require('jwt');
var payload = { foo: 'bar' };
var secret = 'xxx';
var token = jwt.encode(payload, secret);
console.log(token);
}])
我的主要目标是基于JWT令牌处理用户身份验证。现在的问题是当用户登录应用程序时对令牌进行编码/解码。
即使有了所有这些,我仍然会收到错误。你们知道如何解决这个问题吗?
答案 0 :(得分:4)
如果您想在客户端上使用UNSELECTED
,则需要使用Browserify或webpack之类的内容(我绝对推荐使用后者)。
您收到该错误的原因是,事实上,您从未在客户端代码的任何位置定义require
。 JWT回购没有为您提供该功能。
另外,查看您提供的JWT仓库的文档,看来它希望您在node.js环境中使用它(它为您提供commonjs require
。)
答案 1 :(得分:0)
在服务器端(即server.js文件),对于节点,请使用:
var jwt = require('jwt-simple');
然后,编码:
var secret = "Ieaticecreamforbreakfast";
并在您的登录功能中......一旦您检查登录条件
var token = jwt.encode({id: ID, otherInfo: "can go here"}, secret);
res.send({token: token});
然后,您可以将响应令牌设置为您的角度前端中的其他http请求的标头。因此,只要用户向后端发出请求,您就可以在JWT中访问其编码ID