2013-04-16 60 views

cevap

3

Iisnode https://github.com/auth0/passport-windowsauth ile IIS üzerinde barındırıyorsanız güzel çalışır! Pasaport-windowsauth bir reklam entegrasyonu ile geliyor ancak amacıyla yalnızca kendi authorzation mantığı uygulamak adını isterseniz bu

web.config gibi yapabilirsiniz:

<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, done) { 
    done(null, 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(); 
}); 

o zaman diğer yolları istek nesne üzerinde kimliği erişebilir:

app.get("/api/testAuthentication", function(request, response){ 
    console.log(request.user.id + " is authenticated"); 
}); 
function hasRole(role) { 
    return function(request,response,next){ 
     //your own authorzation logic 

     if(role == "a role") 
      next(); 
     else 
      response.status(403).send(); 
    } 
} 
+0

Ancak, IIS'nin arkasında düğümü belirlediğimizde, birçok Node avantajı kaybederiz! – DaNeSh

+0

Tarayıcıdaki URL'den '(request.user.id)' yanıtını alabiliyorum. ancak aynı URL’ye erişmeye çalıştığımda hata alıyorum Yetkisiz hata. Bu yazının eski olduğunu biliyorum ama mümkünse, bu tür bir şeyi kullandığınız herhangi bir örneği paylaşabilir misiniz? –

0

node-sspi: hasRole şöyle

app.get("/api/testAuthorization", hasRole("a role"), function(request, response, next){ 
    console.log(request.user.id " is authenticated and authorized"); 
}); 

: Eğer kullanıcı kimliği kullanarak kendi yetkilendirme mantığı uygulamak istiyorsanızBöyle bir katman işlevi tanımlayabilirsiniz kolay ve verimli buldum kullanmak.

https://www.npmjs.com/package/node-sspi

İlgili konular