Focus mode

Node.js

Session Nedir?

Session Nedir?


Session kavramı Türkçeye oturum olarak çevrilir ve kişiye özel içerik oluşturmak için kullanıcı bilgilerinin sunucu tarafında saklanmasını sağlayan araçlardır. Node.js tarafında express-session paketini kullanacağız. Bu paketi indirmek için:


npm i express-session


Sonrasında "session"ı çağırıp ilgili middleware fonksiyonunu yazacağız.


const session = require('express-session');
----
app.use(
  session({
    secret: 'my_keyboard_cat', // Buradaki texti değiştireceğiz.
    resave: false,
    saveUninitialized: true,
  })
);


Peki oturumu açan kullanıcıyı nasıl belirleyeceğiz, giriş işlemi sırasında kullanıcı ID'sini session alanında userID değişkenini oluşturup ona atayacağız.


req.session.userID = user._id;


Kullanıcıyı yakaladıktan sonra gerisi kolay bundan sonra projemizde yapacağımız herhangi bir işlemin o anda hangi kullanıcıyla ilşkili olduğunu anlayabileceğiz. Bunu pratikte nasıl kullanabiliriz? Örneğin kullanıcılar için giriş yaptıktan sonra "giriş" linkini görmelerine gerek yoktur. Aynı şekilde sadece giriş yapan kullanıcıların "dashboard" linkini görmelerini isteriz. Bunun için globalde userIN değişkeni oluşturacağız.


global.userIN = null;
----
app.use('*', (req, res, next) => {
  userIN = req.session.userID;
  next();
});


Artık _navigation.ejs dosyasında bu global değişkene göre if koşulları oluşturabiliriz.


<% if(!userIN) { %> 

<ul class="nav navbar-nav navbar-right">
     <li><a class="hover-btn-new log <%= page_name ==='login' && 'orange' %> mr-2" href="/login"><span><i class="fa fa-sign-in" aria-hidden="true"></i></span></a></li>
			<li><a class="hover-btn-new log <%= page_name ==='register' && 'orange' %>" href="/register"><span><i class="fa fa-user-plus" aria-hidden="true"></i></span></a></li>
 </ul>

<% } %>

<% if(userIN) { %> 

<ul class="nav navbar-nav navbar-right">
		<li><a class="hover-btn-new log mr-2" href="/users/logout"><span><i class="fa fa-sign-out" aria-hidden="true"></i></span></a></li>
</ul>
	
<% } %>



Daha Fazlası İçin


left-disk

Programs to Accelerate Your Progress in a Software Career

Join our 4-8 month intensive Patika+ bootcamps, start with the fundamentals and gain comprehensive knowledge to kickstart your software career!

right-cube

Comments

You need to enroll in the course to be able to comment!