解决方法
如果你在IIS上使用iisnode
https://github.com/auth0/passport-windowsauth很好地工作! passport-windowsauth带有广告集成,但如果您只想要用户名来实现自己的授权逻辑,那么就可以这样做
web.config中:
<system.webServer> <iisnode promoteServerVars="logoN_USER" /> </system.webServer>
server.js:
var passport = require('passport'); var Windowsstrategy = require('passport-windowsauth'); app.use(passport.initialize()); app.use(passport.session()); passport.serializeUser(function(user,done) { done(null,user); }); passport.deserializeUser(function(user,user); }); passport.use(new Windowsstrategy({ integrated: true },function(profile,done) { var user = { id: profile.id,}; done(null,user); })); app.all("*",passport.authenticate("WindowsAuthentication"),function (request,response,next){ next(); });
然后您可以访问其他路径中的请求对象上的用户ID:
app.get("/api/testAuthentication",function(request,response){ console.log(request.user.id + " is authenticated"); });
如果要使用用户ID实现自己的授权逻辑,可以定义中间件函数,如下所示:
app.get("/api/testAuthorization",hasRole("a role"),next){ console.log(request.user.id " is authenticated and authorized"); });
其中hasRole看起来像这样:
function hasRole(role) { return function(request,next){ //your own authorzation logic if(role == "a role") next(); else response.status(403).send(); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。