Asked Jul 1st, 5:11 AM 125 1 1
  • 125 1 1
+1

Cách authentication cho router view Vuejs ??

Share
  • 125 1 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 ANSWERS


Answered Jul 2nd, 1:11 AM
Accepted
+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.

Share
Tú Trâm @Trungdao
Jul 2nd, 5:30 AM

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

0
| Reply
Share
Tú Trâm @Trungdao
Jul 2nd, 9:07 AM

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

0
| Reply
Share
Jul 3rd, 6:39 AM

@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à

0
| Reply
Share
Jul 3rd, 6:45 AM

@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

0
| Reply
Share