gpt4 book ai didi

java - Spring isUserInRole 不使用 MySQL DB 中的角色

转载 作者:行者123 更新时间:2023-11-30 21:51:18 25 4
gpt4 key购买 nike

我的 Spring 应用程序为我的登录页面使用了一个包含用户和角色的数据库以及两者的交叉表。

为了将用户重定向到不同的角色页面,我使用了 Controller

@Controller
public class StartController {
@RequestMapping("/default")
public String defaultAfterLogin(HttpServletRequest request) {
if (request.isUserInRole("ADMIN")) {
return "redirect:/admin/";
}
return "redirect:/user/";
}
}

但是我用用户“admin”尝试了它,我得到了重定向到 /user

打印出request.getUserPrincipal().toString():

Principal: org.springframework.security.core.userdetails.User@79225df7:
Username: admin@test.de;
Password: [PROTECTED];
Enabled: true;
AccountNonExpired: true;
credentialsNonExpired: true;
AccountNonLocked: true;
Granted Authorities: ADMIN;
Credentials: [PROTECTED];
Authenticated: true;
Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364:
RemoteIpAddress: 0:0:0:0:0:0:0:1;
SessionId: null;
Granted Authorities: ADMIN

重定向到 /admin 的问题是什么?

最佳答案

也许你可以试试这个:

boolean hasAuthorityAdmin = false;

hasAuthorityAdmin = SecurityContextHolder.getContext().getAuthentication().getAuthorities().contains(AuthoritiesConstants.ADMIN);
if (hasAuthorityAdmin) {
return "redirect:/admin/";
}
return "redirect:/user/";

关于java - Spring isUserInRole 不使用 MySQL DB 中的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47158625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com