我的Spring Security性有问题,因为当我登录到这个站点时,我无法通过角色admin访问url。这是我的安全配置
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Bean
public PasswordEncoder encoder() {
return new StandardPasswordEncoder("53cr3t");
}
public SecurityConfig(UserDetailsServiceImpl userDetailsService) {
this.userDetailsService = userDetailsService;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.headers().disable();
http.authorizeRequests()
.antMatchers("/").authenticated()
.antMatchers("/rentAppPage/*").hasAuthority("ADMIN")
.antMatchers("/addVehicle").hasRole("ADMIN")
.antMatchers("/getVehicle").hasAuthority("ADMIN")
.antMatchers("/removeVehicle").hasAuthority("ROLE_ADMIN")
.antMatchers("/updateVehicle").hasAuthority("ROLE_ADMIN")
.antMatchers("/allUser").hasAuthority("ROLE_ADMIN")
.antMatchers("/resultGet").hasAuthority("ROLE_ADMIN")
.antMatchers("/addUser").hasAuthority("ROLE_ADMIN")
.antMatchers("/getUser").hasAuthority("ROLE_ADMIN")
.antMatchers("/updateUser").hasAuthority("ROLE_ADMIN")
.antMatchers("/removeUserById").hasAuthority("ROLE_ADMIN")
.antMatchers("/price").permitAll()
.antMatchers("/allScooter").permitAll()
.antMatchers("/allCar").permitAll()
.antMatchers("/allMotorBike").permitAll()
.antMatchers("/allBike").permitAll()
.antMatchers("/distance").permitAll()
.antMatchers("/user").permitAll()
.antMatchers("/rent").permitAll()
.antMatchers("/rent2").permitAll()
.antMatchers("/buy").permitAll()
.antMatchers("/buy2").permitAll()
.antMatchers("/thanks").permitAll()
.antMatchers("/rentAppPage").hasAnyAuthority( "ROLE_ADMIN", "ROLE_USER")
.and()
.formLogin()
.loginPage("/login").permitAll()
.defaultSuccessUrl("/", true);
;
http.sessionManagement()
//.expiredUrl("/sessionExpired.html")
.invalidSessionUrl("/login.html");
}
}
我试图与hasRole, hasAuthure, hasAny权威,但不工作,只有工作许可所有,但我不想访问的东西url用户与角色用户
这是我的登录控制器
@Controller
public class LoginController {
@Resource(name = "sessionObject")
SessionObject sessionObject;
@Autowired
IAuthenticationService authenticationService;
public LoginController(){
}
@RequestMapping(value = "",method = RequestMethod.GET)
public String mainSite(){
return "redirect:login";
}
@RequestMapping(value = "/login",method = RequestMethod.GET)
public String showLoginForm(Model model){
model.addAttribute("userModel",new User());
model.addAttribute("errorMessage","");
return "login";
}
@RequestMapping(value = "/authenticate",method = RequestMethod.POST)
public String authenticateUser(@ModelAttribute("userModel")User user,Model model){
boolean authResult = this.authenticationService.authenticationUser(user);
if(authResult){
System.out.println("logged !!");
this.sessionObject.setUser(user);
return "rentAppPage";
}else{
model.addAttribute("errorMessage","error data!!!");
model.addAttribute("userModel",new User());
return "login";
}
}
@RequestMapping(value = "/rentAppPage", method = RequestMethod.GET)
public String page(Model model) {
if(this.sessionObject.getUser() == null) {
return "redirect:/login";
}
model.addAttribute("username", this.sessionObject.getUser().getUsername());
System.out.println(this.sessionObject.getUser().getUsername());
return "rentAppPage";
}
@RequestMapping(value = "/logout",method = RequestMethod.GET)
public String logout(){
this.sessionObject.setUser(null);
return "redirect:login";
}
我在数据库中有两个用户,一个是角色管理员,第二个是角色用户,但这不起作用,有人能解释为什么吗?
https://github.com/Conrado1212/Electrical-Rent-App这是我的完整代码
兄弟,如果你能把整个代码发给我们,让我们更好地理解你的错误,那就更好了。但我可以告诉你另一种选择。您只能在HTML中检查角色。例如,您有添加车辆的按钮,您只能根据用户的角色显示和隐藏该按钮。在您的情况下,如果您只想向管理员显示该按钮,则可以如下使用:
<% if (Page.User.IsInRole("Admin")){ %>
//your add vehicle button
<%}%>
免责声明:这不是一个理想的解决方案,但它会起作用。
如果你使用thymeleaf,你可以这样做:-
<div th:if="${#authorization.expression('hasRole(''ADMIN'')')}">
<li><a href="/addVehicle">Add Vehicle</a> </li>
</div>
如果您以管理员身份登录,则只能查看此列表,否则无法查看。如果您想测试它而不是编写列表标记,请使用一些HTML文本,例如
<div th:if="${#authorization.expression('hasRole(''ADMIN'')')}">
<label>Hey, Admin only you can see me</label>
</div>
这里只有角色为admin的用户才能看到此文本。让我知道这是否有效
下面的配置肯定是错误的
antMatchers("/rentAppPage/*").hasAuthority("ADMIN")
应该是
antMatchers("/rentAppPage/*").hasRole("ADMIN")
另外,作为一项建议,请尽量保持一致性,您在配置中混合了hasAuthority(“ROLE_ADMIN”)和hasRole(“ADMIN”),当两者的含义相同时,请坚持一个,并使代码更清晰。
问题内容: 我真的很想用Struts2来解决问题- 通过省略部分路径,我可以访问JSP页面。请注意该路径应该包括在内。关键是要看路径中的单词。 这是文件: 我可以通过: 和通过: 请注意,在两个URL中,我都可以删除,为什么? 来源:http: //www.mkyong.com/misc/how-to-use-mkyong- tutorial/ 有人可以看完上面的教程,告诉我怎么了吗? 问题答案:
在一个扩展WebSecurityConfigureAdapter的类中,我使用以下代码通过url为不同的角色添加安全性。 当我以用户角色登录时,我可以访问:/rest/setup/tax 当我使用管理员角色登录时,我可以访问 /rest/setup/tax http://localhost:8080/rest/setup/tax403(禁止) 我搜索只提供get for user角色和admin
问题内容: 我想为具有以下角色之一(ROLE1或ROLE2)的用户定义某些页面的访问权限 我正在尝试在我的spring security xml文件中进行如下配置: 我尝试了各种方法,例如: 等等 但似乎没有任何效果。 我一直在例外 要么 应该如何配置? 谢谢 问题答案: 问题是我配置了自定义 ,但没有通过其中一名选民。 通过添加到bean中来解决。
我创建了这个简单的控制器: 如您所见,它受的保护。 根据日志: 如您所见,用户已通过身份验证,并具有角色查看器。然而,由于“访问被拒绝”,它无法到达endpoint。 上一个日志片段: 主体:用户名;凭据:[受保护];身份验证:真;详细信息:空;授予权限:查看者 我的JWTFilter看起来像: 有什么想法吗?
我是Spring-Boot的新手。我想创建一个API,它将具有基于角色的访问权限和基于JWT令牌的身份验证。但是,无法实现。 我没有使用JPA 安全配置 控制器 授权过滤器 在这种情况下,除了具有主管角色的用户之外,不应访问api/username。
获取访问攻击是网络渗透测试的第二部分。 在本节中,我们将连接到网络,这将使我们能够发起更强大的攻击并获得更准确的信息。 如果网络不使用加密,我们可以连接到它并嗅出未加密的数据。 如果网络是有线的,我们可以使用电缆并连接到它,可能通过更改我们的MAC地址。唯一的问题是攻击目标使用加密,如WEP,WPA,WPA2。 如果我们确实遇到加密数据,我们需要知道解密它的密钥,这在本章将会学习和实践。 如果网络