我正在尝试用Spring Boot学习Spring Security性。我有一个我正在实现它的演示。它适用于登录页面和配置文件方法,可以由任何有效用户进行身份验证。但当我试图访问某个特定角色时,它不起作用,并给我一个“403-拒绝访问”。
我的接入点
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "/home.jsp";
}
@RequestMapping("/profile")
public String profile() {
return "/profile.jsp";
}
@RequestMapping("/admin")
public String admin() {
return "/admin.jsp";
}
@RequestMapping("/management")
public String management() {
return "/management.jsp";
}
}
我的配置方法
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/login", "/").permitAll()
.antMatchers("/profile").authenticated()
.antMatchers("/admin").hasRole("ADMIN")
.antMatchers("/management").hasAnyRole("ADMIN", "MANAGEMENT")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.and()
.logout().invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/logout-success").permitAll();
}
我的角色分配
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Collections.singleton(new SimpleGrantedAuthority("ADMIN"));
}
我认为这是Spring Security最不明显的地方。角色和权限是一样的,但是角色的前缀应该是ROLE\uu
。所以,正确的用法是
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Collections.singleton(new SimpleGrantedAuthority("ROLE_ADMIN"));
}
我对Spring靴还不熟悉。我需要在spring boot中实现基于角色的授权。我有不同的角色,多个用户将映射到每个角色。每当调用api时,我都会设置不同的访问权限(读取、添加、删除、编辑),需要检查访问权限并允许权限。我计划使用拦截器调用具有查询的方法,以从DB获取访问权限,并拒绝或访问api。有没有其他更好的方法我可以用同样的方法?
我正在开发一个基于spring security的web应用程序,我想根据登录用户的角色是ADMIN还是user来限制侧栏上的项目。就身份验证而言,一切正常,但角色没有按预期工作。 跟随这篇文章 例如- 即使我以-ADMIN登录,上述元素也永远不可见。 有人能在这里帮助我理解出了什么问题吗? 安全配置 UserDetailsImpl 用户详细信息服务 用户详细信息 控制器 使用者 在db中创建的表
我是oAuth2安全系统的新手。关于访问REST资源的基于用户角色的授权,我有一个问题。我的互联网冲浪提供了关于oauth2的身份验证部分的输入。 让我提供给你困扰我的情况。
问题内容: 我正在尝试在Centos 6.6上将以下服务脚本用于apache jmeter。 service jmeter start和service jmeter stop正常运行,但是当我尝试重新启动service jmeter时,它正在停止Java实例,但由于认为jmeter已经在运行,因此没有再次启动它。 任何指针将不胜感激。 问题答案: 您没有在stop和start命令之间进行重置/更新
在.NET core中,我尝试了一系列方法,例如在我的控制器方法中添加或以及使用基于策略的授权,在此我检查实现中的。 如果我在身份验证处理程序中设置了一些断点。当它被击中时,我可以看到“tester”和“developer”角色被列为IEnumerable下的项,如下所示。 因此,通过验证集合中和的值,我应该能够成功地在身份验证处理程序中进行授权,但这需要我反序列化声明值,这些声明值似乎只是JSO
问题内容: 我有一个课程,如何让@JsonIgnore工作。即使将注释放在此处,它也不会影响输出。我正在使用杰克逊。 这是我的Controller方法: 这是我的servlet-context.xml: 问题答案: 我终于找到了解决方案。我将导入声明从 至 基本上,您必须确保在所有地方都使用相同的类。