完善登录功能
This commit is contained in:
parent
bf5a547efb
commit
efd4f19fab
|
|
@ -47,7 +47,14 @@
|
|||
<artifactId>spring-cloud-starter-gateway</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
<version>${spring-cloud-alibaba.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.springframework.security</groupId>-->
|
||||
<!-- <artifactId>spring-security-config</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
|
|
|||
|
|
@ -20,7 +20,10 @@ public class TokenFilter implements GlobalFilter, Ordered {
|
|||
System.out.println("Token:"+token);
|
||||
String url = exchange.getRequest().getURI().getPath();
|
||||
System.out.println("intercept " + url);
|
||||
|
||||
if(url.equals("/api/oms-api/login")){
|
||||
// 登录页面 放行
|
||||
return chain.filter(exchange);
|
||||
}
|
||||
// TODO: 统一鉴权处理
|
||||
if(!StringUtils.hasText(token)){
|
||||
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,10 @@ public class HomeController {
|
|||
private RedisTemplate<String,String> redisTemplate;
|
||||
@Resource
|
||||
private EchoService echoService;
|
||||
|
||||
@GetMapping("/")
|
||||
public String home(){
|
||||
return "{'code':0,'msg':'请通过api访问'}";
|
||||
}
|
||||
@GetMapping(value = "/echo-rest")
|
||||
public String rest() {
|
||||
return restTemplate.getForObject("http://tao-oms/test/na", String.class);
|
||||
|
|
@ -28,8 +31,4 @@ public class HomeController {
|
|||
return echoService.echo();
|
||||
}
|
||||
|
||||
@GetMapping(value = "/home")
|
||||
public String home(){
|
||||
return "home";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@ import com.qihang.oms.api.service.SysLoginService;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
public class LoginController {
|
||||
@Autowired
|
||||
|
|
@ -17,12 +20,18 @@ public class LoginController {
|
|||
private ISysUserService userService;
|
||||
@PostMapping(value = "/login")
|
||||
public AjaxResult login(@RequestBody LoginBody loginBody){
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
// AjaxResult ajax =
|
||||
// SysUser user = userService.selectUserByUserName(loginBody.getUsername());
|
||||
// 生成令牌
|
||||
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
|
||||
loginBody.getUuid());
|
||||
ajax.put(Constants.TOKEN, token);
|
||||
return ajax;
|
||||
// ajax.put(Constants.TOKEN, token);
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("accessToken", token);
|
||||
map.put("tokenType","Bearer");
|
||||
return AjaxResult.success(map);
|
||||
}
|
||||
|
||||
//logout
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
package com.qihang.oms.api.controller;
|
||||
|
||||
import com.qihang.oms.api.common.AjaxResult;
|
||||
import com.qihang.oms.api.domain.vo.MenusDetailVo;
|
||||
import com.qihang.oms.api.domain.vo.MenusVo;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RequestMapping("/menus")
|
||||
@RestController
|
||||
public class MenusController {
|
||||
|
||||
@GetMapping(value = "/routes")
|
||||
public AjaxResult list() {
|
||||
List<MenusVo> vo = new ArrayList<>();
|
||||
MenusVo m1 = new MenusVo();
|
||||
m1.setPath("/system");
|
||||
m1.setComponent("Layout");
|
||||
m1.setRedirect("/system/user");
|
||||
m1.setName("/system");
|
||||
MenusDetailVo meta1 = new MenusDetailVo();
|
||||
meta1.setTitle("系统管理");
|
||||
meta1.setIcon("system");
|
||||
meta1.setHidden(false);
|
||||
meta1.setRoles(new String[]{"ADMIN", "ADMIN6"});
|
||||
m1.setMeta(meta1);
|
||||
|
||||
List<MenusVo> m1Ch = new ArrayList<>();
|
||||
MenusVo m1ch1 = new MenusVo();
|
||||
m1ch1.setPath("/user");
|
||||
m1ch1.setComponent("system/user/index");
|
||||
m1ch1.setName("User");
|
||||
MenusDetailVo meta11 = new MenusDetailVo();
|
||||
meta11.setTitle("用户管理");
|
||||
meta11.setIcon("user");
|
||||
meta11.setHidden(false);
|
||||
meta11.setRoles(new String[]{"ADMIN", "GUEST"});
|
||||
meta11.setKeepAlive(true);
|
||||
m1ch1.setMeta(meta11);
|
||||
m1Ch.add(m1ch1);
|
||||
m1.setChildren(m1Ch);
|
||||
vo.add(m1);
|
||||
return AjaxResult.success(vo);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package com.qihang.oms.api.controller;
|
||||
|
||||
import com.qihang.oms.api.common.AjaxResult;
|
||||
import com.qihang.oms.api.domain.vo.UserInfoVo;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RequestMapping("/users")
|
||||
@RestController
|
||||
public class UsersController {
|
||||
|
||||
@GetMapping(value = "/me")
|
||||
public AjaxResult me() {
|
||||
UserInfoVo vo = new UserInfoVo();
|
||||
vo.setUserId(2);
|
||||
vo.setUsername("admin");
|
||||
vo.setNickname("系统管理员");
|
||||
vo.setAvatar("https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif");
|
||||
vo.setRoles(new String[]{"ADMIN"});
|
||||
List<String> perms = new ArrayList<>();
|
||||
perms.add("sys:menu:delete");
|
||||
perms.add("sys:dept:edit");
|
||||
perms.add("sys:dict_type:add");
|
||||
perms.add("sys:dict:edit");
|
||||
perms.add("sys:dict:delete");
|
||||
perms.add("sys:dict_type:edit");
|
||||
perms.add("sys:menu:add");
|
||||
perms.add("sys:user:add");
|
||||
perms.add("sys:role:edit");
|
||||
perms.add("sys:dept:delete");
|
||||
perms.add("sys:user:password_reset");
|
||||
perms.add("sys:user:edit");
|
||||
perms.add("sys:user:delete");
|
||||
perms.add("sys:dept:add");
|
||||
perms.add("sys:role:delete");
|
||||
perms.add("sys:dict_type:delete");
|
||||
perms.add("sys:menu:edit");
|
||||
perms.add("sys:dict:add");
|
||||
perms.add("sys:role:add");
|
||||
vo.setPerms(perms);
|
||||
return AjaxResult.success(vo);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
package com.qihang.oms.api.domain.vo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MenusDetailVo {
|
||||
private String title;
|
||||
private String icon;
|
||||
private Boolean hidden;
|
||||
private String[] roles;
|
||||
private Boolean keepAlive;
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getIcon() {
|
||||
return icon;
|
||||
}
|
||||
|
||||
public void setIcon(String icon) {
|
||||
this.icon = icon;
|
||||
}
|
||||
|
||||
public Boolean getHidden() {
|
||||
return hidden;
|
||||
}
|
||||
|
||||
public void setHidden(Boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
}
|
||||
|
||||
public String[] getRoles() {
|
||||
return roles;
|
||||
}
|
||||
|
||||
public void setRoles(String[] roles) {
|
||||
this.roles = roles;
|
||||
}
|
||||
|
||||
public Boolean getKeepAlive() {
|
||||
return keepAlive;
|
||||
}
|
||||
|
||||
public void setKeepAlive(Boolean keepAlive) {
|
||||
this.keepAlive = keepAlive;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package com.qihang.oms.api.domain.vo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MenusVo {
|
||||
private String path;
|
||||
private String component;
|
||||
private String redirect;
|
||||
private String name;
|
||||
private MenusDetailVo meta;
|
||||
private List<MenusVo> children;
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String getComponent() {
|
||||
return component;
|
||||
}
|
||||
|
||||
public void setComponent(String component) {
|
||||
this.component = component;
|
||||
}
|
||||
|
||||
public String getRedirect() {
|
||||
return redirect;
|
||||
}
|
||||
|
||||
public void setRedirect(String redirect) {
|
||||
this.redirect = redirect;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public MenusDetailVo getMeta() {
|
||||
return meta;
|
||||
}
|
||||
|
||||
public void setMeta(MenusDetailVo meta) {
|
||||
this.meta = meta;
|
||||
}
|
||||
|
||||
public List<MenusVo> getChildren() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<MenusVo> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package com.qihang.oms.api.domain.vo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UserInfoVo {
|
||||
private Integer userId;
|
||||
private String username;
|
||||
private String nickname;
|
||||
private String avatar;
|
||||
private String[] roles;
|
||||
private List<String> perms;
|
||||
|
||||
public Integer getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Integer userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getNickname() {
|
||||
return nickname;
|
||||
}
|
||||
|
||||
public void setNickname(String nickname) {
|
||||
this.nickname = nickname;
|
||||
}
|
||||
|
||||
public String getAvatar() {
|
||||
return avatar;
|
||||
}
|
||||
|
||||
public void setAvatar(String avatar) {
|
||||
this.avatar = avatar;
|
||||
}
|
||||
|
||||
public String[] getRoles() {
|
||||
return roles;
|
||||
}
|
||||
|
||||
public void setRoles(String[] roles) {
|
||||
this.roles = roles;
|
||||
}
|
||||
|
||||
public List<String> getPerms() {
|
||||
return perms;
|
||||
}
|
||||
|
||||
public void setPerms(List<String> perms) {
|
||||
this.perms = perms;
|
||||
}
|
||||
}
|
||||
|
|
@ -45,8 +45,8 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
|
|||
{
|
||||
// String token = exchange.getRequest().getHeaders().getFirst(TOKEN_HEADER);
|
||||
String token = request.getHeader("Authorization");
|
||||
|
||||
log.info("intercept " + request.getRequestURI());
|
||||
String url =request.getRequestURI();
|
||||
log.info("intercept " + url);
|
||||
log.info("token: " + token);
|
||||
if(request.getRequestURI().equals("/login")){
|
||||
// 登录页面,放行
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
|
||||
@RestController
|
||||
public class HomeController {
|
||||
@GetMapping("/test/22")
|
||||
@GetMapping("/")
|
||||
public String home(){
|
||||
return "hello world";
|
||||
return "{'code':0,'msg':'请通过api访问'}";
|
||||
}
|
||||
|
||||
@Value(value = "${zhijian.name:1}")
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@ export function loginApi(data: LoginData): AxiosPromise<LoginResult> {
|
|||
formData.append("captchaKey", data.captchaKey || "");
|
||||
formData.append("captchaCode", data.captchaCode || "");
|
||||
return request({
|
||||
url: "/api/v1/auth/login",
|
||||
url: "/api/oms-api/login",
|
||||
method: "post",
|
||||
data: formData,
|
||||
headers: {
|
||||
"Content-Type": "multipart/form-data",
|
||||
// "Content-Type": "multipart/form-data",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@ export function loginApi(data: LoginData): AxiosPromise<LoginResult> {
|
|||
*/
|
||||
export function logoutApi() {
|
||||
return request({
|
||||
url: "/api/v1/auth/logout",
|
||||
url: "/api/oms-api/logout",
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import { MenuQuery, MenuVO, MenuForm } from "./types";
|
|||
*/
|
||||
export function listRoutes() {
|
||||
return request({
|
||||
url: "/api/v1/menus/routes",
|
||||
url: "/api/oms-api/menus/routes",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import { UserForm, UserInfo, UserPageVO, UserQuery } from "./types";
|
|||
*/
|
||||
export function getUserInfoApi(): AxiosPromise<UserInfo> {
|
||||
return request({
|
||||
url: "/api/v1/users/me",
|
||||
url: "/api/oms-api/users/me",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ service.interceptors.request.use(
|
|||
service.interceptors.response.use(
|
||||
(response: AxiosResponse) => {
|
||||
const { code, msg } = response.data;
|
||||
if (code === "00000") {
|
||||
if (code === "200" || code === 200) {
|
||||
return response.data;
|
||||
}
|
||||
// 响应数据为二进制流处理(Excel导出)
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
v-show="useAppStore().device == 'desktop'"
|
||||
>
|
||||
<p>
|
||||
Copyright © 2021 - 2024 youlai.tech All Rights Reserved. 启航电商
|
||||
Copyright © 2021 - 2024 qihangec.tech All Rights Reserved. 启航电商
|
||||
版权所有
|
||||
</p>
|
||||
<p>皖ICP备20006496号-3</p>
|
||||
|
|
@ -261,6 +261,7 @@ function handleLogin() {
|
|||
userStore
|
||||
.login(loginData.value)
|
||||
.then(() => {
|
||||
console.log("登录成功")
|
||||
const query: LocationQuery = route.query;
|
||||
|
||||
const redirect = (query.redirect as LocationQueryValue) ?? "/";
|
||||
|
|
@ -277,9 +278,10 @@ function handleLogin() {
|
|||
|
||||
router.push({ path: redirect, query: otherQueryParams });
|
||||
})
|
||||
.catch(() => {
|
||||
.catch((res) => {
|
||||
console.log("登录失败",res)
|
||||
// 验证失败,重新生成验证码
|
||||
getCaptcha();
|
||||
// getCaptcha();
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
|
|
|
|||
Loading…
Reference in New Issue