spring-boot 弹簧安全 angularjs
Posted
技术标签:
【中文标题】spring-boot 弹簧安全 angularjs【英文标题】:spring-boot spring security angularjs 【发布时间】:2018-04-28 11:34:42 【问题描述】:我是春天世界的新手。我需要创建一个带有一些 CRUD 操作的 spring boot - angularjs 应用程序。
客户端需要 LDAP 和本地 JDBC 身份验证机制。
他们需要一种对两组用户都通用的授权机制。
应根据用户的角色限制用户访问某些页面。并且需要对每个用户应用单独的权限(创建、更新、删除)集
角色应该由管理员用户创建。
那么我该如何实现由管理员决定谁(哪个角色)可以访问哪个页面的页面授权?
@Override
protected void configure(HttpSecurity http) throws Exception
http.authorizeRequests().antMatchers("/", "/home").permitAll().antMatchers("/admin").hasRole("ADMIN")
.anyRequest().authenticated().and().formLogin().loginPage("/login").permitAll().and().logout()
.permitAll();
http.exceptionHandling().accessDeniedPage("/403");
我应该在配置中指定每个角色页面组合吗? 有没有办法动态更改页面和角色,因为角色可能会在以后添加。
【问题讨论】:
【参考方案1】:可以使用spring mvc和Secured注解
@Controller
public class MainController extends BaseController
@Secured("ROLE_ADMIN")
@RequestMapping("/")
String home(Model model)
return "home";
主页将是 /resources/templates/home.ftl 或您喜欢的 jsp。如果用户不是管理员,那么它将重定向到错误页面。
如果您愿意,您可以手动检查权限并将重定向发送到另一个页面。
P.S : 你需要添加 @EnableGlobalMethodSecurity(securedEnabled = true) 到 Spring boot 配置类,以便 Secured 注释工作。
@EnableAutoConfiguration
@ComponentScan
@Configuration
@EnableGlobalMethodSecurity(securedEnabled = true)
public class Application
public static void main(String[] args) throws Exception
SpringApplication.run(Application.class, args);
【讨论】:
如果在一段时间后创建了一个新角色(可能是本地管理员)怎么办..?而且我认为注解参数不能动态改变。 您可以将页面角色记录存储在数据库中,并手动检查控制器方法用户权限,如果不符合条件则重定向 我改变了主意,现在决定从前端控制对页面的访问和读/写权限,并且只从 spring 端进行基本身份验证。这是一个内部生产应用程序。如何将权限数据集带到 angularjs 端...?我应该使用过滤器吗?在我的情况下使用弹簧安全是一个好主意..?有没有其他方法可以完成这项工作..?以上是关于spring-boot 弹簧安全 angularjs的主要内容,如果未能解决你的问题,请参考以下文章