2016-03-02 82 views
0

我使用PHP開發web系統,現在我對NODEJS非常興奮。將php遷移到nodejs - 在客戶端處理會話

即使它是不是一個好的做法,在我看來,很多次做到這一點:

如果用戶沒有登錄,他們重定向。

<?php 

    session_start(); 

    if(!isset($_SESSION['login']) || 4 !== (integer)$_SESSION['id_perfil_sistema']){ 
     header("Location: /vault/"); 
    } 

?> 

其他時間我得到的會話數據根據登錄的用戶

<li style="background-color:#ddd;"> <a style="color:blue;" href="#"> <?php echo ucwords($_SESSION['nomeusuario']); ?> </a> </li>

<input type="hidden" name="theOrigin" value="<?=$_SESSION['origin'];?>" /> 

<script type="text/javascript"> 
    var x = <?php echo $_SESSION['session_variable']; ?>; 
</script> 

我已經學會了對的NodeJS創建會話定製頁面。 =)

在javascript中獲取會話nodejs的最佳方式是什麼?

我正在使用nodejs和express。

親切的問候

+0

這樣做幫助呢? – OllieH

回答

2

你應該能夠從任何請求對象獲取會話,一旦你已經包括了Express會話中間件(https://github.com/expressjs/session

例如重定向所有非登錄用戶爲「/登錄」,可以寫爲快遞中間件上這樣每個請求:

app.use(function(req, res, next) { 
    if(!req.session.login){ 
     res.redirect("/login"); 
     return; 
    } 
    next(); 
}); 

和添加會話來標記(假定使用玉或其它明示模板中間件)

JS

app.get('/', function (req, res) { 
    res.render('index', { nomeusuario: req.session.nomeusuario }); 
}); 

玉(例如)

html 
    body 
    h1= nomeusuario 

注:代碼沒有測試,只是一個例子

+0

很好的答案,@Ollieh! @ felipe-muner,我建議你使用模板化的代碼:代碼可讀性,編碼效率,孩子到父母的佈局使用(你可以在擴展器中定義佈局填充)和[更多](http://vstark.net/2014/10/18 /玉-VS-HTML /)。 A plus:您可以使用[config package](https://www.npmjs.com/package/config)定義資源路徑(使用CDN?使用它!)和一般應用程序配置。 –