Yêu cầu thg 7 1, 2020 5:11 SA 232 2 1
  • 232 2 1
+2

Cách authentication cho router view Vuejs ??

Chia sẻ
  • 232 2 1

Các bác thường dùng cách nào để authen cho app client ạ, e mới tập tọe loay hoay mãi mà k biết cách nào để authen tốt nhất @@

1 CÂU TRẢ LỜI


Đã trả lời thg 7 2, 2020 1:11 SA
Đã được chấp nhận
+2

mình thường dùng theo cách này trong file router mình dùng một hàm check authen

Đây là app mình sử dụng token để authen nên sẽ có 2 bước check một là có token không rồi đến validateToken cái này mình xử lý trong store nên dùng getters để lấy trạng thái . Nếu đã login thì cho ở path đấy còn nếu không sẽ bị đẩy về /home

const ifAuthenticated = async (to, from, next) => {
  if (store.getters.isHaveToken) {
    store.dispatch("validateToken").then(() => {
      if (!store.getters.isAuthenticated) {
        next();
        return;
      } else next("/home");
    });
  } else next("/home");
};

Sau đó sử dụng beforeEnter để check.

const routes = [
  {
    path: "/",
    name: "Welcome",
    component: Welcome,
    beforeEnter: ifAuthenticated
  },
...]

Nhược điểm là tiến trình phải xử lý tuần tự vì việc validate token lên server sẽ tốn thời gian. Cái này có một cách là làm màn hình loading và trong store quản lý một state là isLoading = true nếu đang load và false khi load xong.

Chia sẻ
Avatar Tú Trâm @Trungdao
thg 7 2, 2020 5:30 SA

Để validate token thì mình lại phải request lên api serve à bác!!

Avatar Tú Trâm @Trungdao
thg 7 2, 2020 9:07 SA

bác cho e xem code hàm isAuthenticated với ạ @@

thg 7 3, 2020 6:39 SA

@Trungdao à mình dùng JWT có thể sẽ có lúc muốn rip cái token đấy hoặc có tính năng logout khỏi tất cả các thiết bị thì trước khi đăng nhập vào thì cũng phải check xem cái token đấy còn dùng đc không ý mà

thg 7 3, 2020 6:45 SA

@Trungdao cái isAuthenticated là cái giá trị true false sau khi mình request lên server để validate cái token thôi :v nếu validate thành công thì trạng thái ng dùng là đăng nhập và isAuthenticated = true và ngược lại thôi

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí