Melakukan auth token di angularjs

Kali ini saya akan share cara melakukan auth supaya pas refresh browser token nya masih tersimpan Pastikan supaya kamu paham tentang auth, kamu harus tahu dulu dasar2 angularjs Ok langsung saja kita buat factory untuk melakukan cek token

angular.module('app')
  .factory('auth', function($rootScope, $q, $window, $location) {
    return {
      request: function(config) {
        config.headers = config.headers || {};
        if ($window.sessionStorage.token) {
          config.headers.Authorization = $window.sessionStorage.token;
        }
        return config;
      },
      {
        response: function(response) {
          if (response.status === 401) {
            $location.path('#/login');
          }
          return response || $q.when(response);
        }
      }
    };
  });

untuk code bagian request ini di gunakan untuk menambahkan headers di setiap kita melakukan get/post etc contoh gambar ini contoh untuk penggunaan di postman sedangkan code bagian response ini di gunakan untuk mengecek balesan dari server karna di percobaan ini di server kalau salah token saya kasih 401, maka kalau kita dapat respon itu langsung redirect ke halaman login nah untuk kita mengecek apakah kita sudah berhasil dapatkan token apa tidak kita bisa gunakan if else di setiap controller contoh

if ($window.sessionStorage.token) {
    $location.path('/home');
 }
//buat cek kalau ada token redirect ke home
if (!$window.sessionStorage.token) {
   $location.path('/login');
}
//buat cek kalau tidak ada token

dan tambahkan

$httpProvider.interceptors.push('auth');

di bagian angular.config, biasanya sih file app.js pastikan juga di bagian controller function di kasih $window dan $location

avatar ardyhim
@ardyhim

289 Kontribusi 175 Poin

Dipost 7 tahun yang lalu

8 Jawaban:

itu token format apa ?

avatar ma4m
@ma4m

97 Kontribusi 39 Poin

Dipost 7 tahun yang lalu

saya di sisi server pakai https://jwt.io/

avatar ardyhim
@ardyhim

289 Kontribusi 175 Poin

Dipost 7 tahun yang lalu

enkripsi dibelakang pakai simetric atau asimetric enkripsi?

avatar ma4m
@ma4m

97 Kontribusi 39 Poin

Dipost 7 tahun yang lalu

saya kurang tahu yang di tanyakan, tapi saya pakai expressjs dengan cara ini

var token = jwt.sign(data, config.secret, {
          expiresIn: '60m',
          algorithm: 'HS256'
        });
avatar ardyhim
@ardyhim

289 Kontribusi 175 Poin

Dipost 7 tahun yang lalu

saat decript nya pakai config.secret juga ?

avatar ma4m
@ma4m

97 Kontribusi 39 Poin

Dipost 7 tahun yang lalu

iya mas

var token = req.body.token || req.query.token || req.headers.authorization;
  if(token){
    jwt.verify(token, config.secret, function(err, decoded){
      if (err) {
        res.json({success: false, message: 'Failed to authenticate token'});
      }else {
        req.decoded = decoded;
        next();
      }
    });
  }else {
    return res.status(403).send({
        success: false,
        message: 'No token provided.'
    });
  }
avatar ardyhim
@ardyhim

289 Kontribusi 175 Poin

Dipost 7 tahun yang lalu

tutorial membangun authnya ada ndak mas?

avatar adiakbar
@adiakbar

2 Kontribusi 0 Poin

Dipost 7 tahun yang lalu

kalau buat untuk sisi server nya bingung juga mas, soalnya banyak banget bahasa buat bikin sisi server nya :D kalau mau coba ini mungkin bisa belajar lewat google plus sdk. ini salah satu cara https://github.com/mrzmyr/angular-google-plus

avatar ardyhim
@ardyhim

289 Kontribusi 175 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban