Trong ứng dụng của tôi, một số tuyến đường chỉ có thể truy cập được đối với người dùng được xác thực.
Khi người dùng chưa được xác thực nhấp vào liên kết mà anh ấy phải đăng nhập, anh ấy sẽ được chuyển hướng đến thành phần đăng nhập.
Nếu người dùng đăng nhập thành công, Tôi muốn chuyển hướng anh ấy đến URL anh ấy yêu cầu trước khi anh ấy phải đăng nhập. Tuy nhiên, cũng phải là tuyến đường mặc định, trong trường hợp người dùng không yêu cầu URL khác trước khi đăng nhập.
Làm cách nào để đạt được điều này bằng bộ định tuyến?
Chuyển hướng đến trang được yêu cầu sau khi đăng nhập bằng vue-router
Mã của tôi mà không cần chuyển hướng sau khi đăng nhập
router.beforeEach(
(to, from, next) => {
if(to.matched.some(record => record.meta.forVisitors)) {
next()
} else if(to.matched.some(record => record.meta.forAuth)) {
if(!Vue.auth.isAuthenticated()) {
next({
path: '/login'
// Redirect to original path if specified
})
} else {
next()
}
} else {
next()
}
}
)
chức năng đăng nhập của tôi trong phần đăng nhập của tôi
login() {
var data = {
client_id: 2,
client_secret: '**************',
grant_type: 'password',
username: this.email,
password: this.password
}
// send data
this.$http.post('oauth/token', data)
.then(response => {
// authenticate the user
this.$auth.setToken(response.body.access_token,
response.body.expires_in + Date.now())
// redirect to route after successful login
this.$router.push('/')
})
tôi sẽ rất biết ơn đối với bất kỳ loại Cứu giúp!
Bạn có thể làm điều gì đó như 'next ({path: '/ login? From =' + to.path})' và sau đó kiểm tra trên trang đăng nhập của bạn nếu tham số truy vấn 'from' được đặt và thực hiện chuyển hướng –
@ FlorianHaider Điều đó nghe có vẻ như một giải pháp tuyệt vời! Làm cách nào để kiểm tra xem thông số truy vấn từ được đặt từ thành phần đăng nhập của tôi? – Schwesi
@Schwesi bạn nhận được các tham số truy vấn bằng cách sử dụng 'this. $ Route.query.from'. Nếu không có truy vấn nào, bạn sẽ nhận được một đối tượng trống –