写一段代码Springboot+vue实现不同用户登录访问不同页面
时间: 2023-06-06 12:04:23 浏览: 130
SpringBoot+Vue工作流程管理系统答辩PPT.pptx
好的,以下是实现不同用户登录访问不同页面的 Springboot + Vue 代码示例:
1. 在 SpringBoot 中创建一个 UserController 类,编写如下代码:
```
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public String login(@RequestBody User user) {
if (userService.checkUser(user)) {
// 登录成功
return "success";
} else {
// 登录失败
return "fail";
}
}
@GetMapping("/page")
public String getPage(@RequestParam("username") String username) {
// 根据用户名获取用户类型
String userType = userService.getUserType(username);
// 根据用户类型返回不同的页面
if ("admin".equals(userType)) {
// 返回管理员页面
return "<h1>Hello Admin</h1>";
} else if ("normal".equals(userType)) {
// 返回普通用户页面
return "<h1>Hello Normal User</h1>";
} else {
// 返回未知用户页面
return "<h1>Hello Unknown User</h1>";
}
}
}
```
2. 在 SpringBoot 中创建一个 UserService 类,编写如下代码:
```
@Service
public class UserService {
private static final Map<String, String> users = new HashMap<>();
static {
// 初始化用户信息
users.put("admin", "123456");
users.put("normal", "111111");
}
public boolean checkUser(User user) {
String username = user.getUsername();
String password = user.getPassword();
String pwd = users.get(username);
return pwd != null && pwd.equals(password);
}
public String getUserType(String username) {
// 简单判断用户类型
if ("admin".equals(username)) {
return "admin";
} else if ("normal".equals(username)) {
return "normal";
} else {
return "unknown";
}
}
}
```
3. 在 Vue 中创建一个 Login 组件,编写如下代码:
```
<template>
<div>
<h2>Login</h2>
<form>
<div>
<label>Username: </label>
<input v-model="username" type="text" />
</div>
<div>
<label>Password: </label>
<input v-model="password" type="password" />
</div>
<button type="button" @click="handleLogin">Login</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
username: "",
password: "",
};
},
methods: {
handleLogin() {
// 发送登录请求
this.$http
.post("/api/user/login", {
username: this.username,
password: this.password,
})
.then((response) => {
if (response.data === "success") {
// 登录成功,跳转到相应页面
this.$router.push("/" + this.username);
} else {
// 登录失败,提示错误信息
alert("Username or Password is invalid.");
}
})
.catch((error) => {
console.log(error);
});
},
},
};
</script>
```
4. 在 Vue 中创建一个 Admin 组件和一个 Normal 组件,分别对应管理员页面和普通用户页面,编写如下代码:
```
<template>
<div>
<h2>Admin Page</h2>
<p>Welcome to Admin Page.</p>
</div>
</template>
<script>
export default {
mounted() {
// 根据用户名获取相应页面
this.$http
.get("/api/user/page", { params: { username: "admin" } })
.then((response) => {
// 渲染页面
this.$el.innerHTML = response.data;
})
.catch((error) => {
console.log(error);
});
},
};
</script>
```
```
<template>
<div>
<h2>Normal Page</h2>
<p>Welcome to Normal Page.</p>
</div>
</template>
<script>
export default {
mounted() {
// 根据用户名获取相应页面
this.$http
.get("/api/user/page", { params: { username: "normal" } })
.then((response) => {
// 渲染页面
this.$el.innerHTML = response.data;
})
.catch((error) => {
console.log(error);
});
},
};
</script>
```
以上代码实现了不同用户登录访问不同页面的功能,具体实现思路是在用户登录成功后,根据用户名获取用户类型,再根据用户类型返回不同的页面。在 Vue 中,使用 axios 发送登录请求和获取页面内容,根据结果进行相应处理。注意,实现过程中需要注意安全性和代码可维护性,有待进一步优化和完善。
阅读全文