rbac 权限(rbac 权限管理 layui springboot)

rbac 权限(rbac 权限管理 layui springboot)Spring Boot 是一个快速开发框架 它提供了一系列的工具和插件 可以快速构建一个企业级的应用程序 而 Shiro 是一个强大而灵活的安全框架 可以提供身份验证 授权 密码加密 会话管理等功能 CAS 是一个单点登录 SSO 协议 可以实现用户在多个应用系统中使用同一个身份验证 下面是一个简单的 Spring Boot Shiro CAS 的示例 应用程序

大家好,我是讯享网,很高兴认识大家。

Spring Boot 是一个快速开发框架,它提供了一系列的工具和插件,可以快速构建一个企业级的应用程序。而 Shiro 是一个强大而灵活的安全框架,可以提供身份验证、授权、密码加密、会话管理等功能。CAS 是一个单点登录(SSO)协议,可以实现用户在多个应用系统中使用同一个身份验证。

下面是一个简单的 Spring Boot + Shiro + CAS 的示例应用程序:


讯享网

  1. 创建一个 Spring Boot 应用程序,并添加依赖:
&lt;dependency&gt; &lt;groupId&gt;org.<em>spring</em>framework.<em>boot</em>&lt;/groupId&gt; &lt;artifactId&gt;<em>spring</em>-<em>boot</em>-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.<em>shiro</em>&lt;/groupId&gt; &lt;artifactId&gt;<em>shiro</em>-<em>spring</em>-<em>boot</em>-web-starter&lt;/artifactId&gt; &lt;version&gt;1.5.3&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.jasig.cas.client&lt;/groupId&gt; &lt;artifactId&gt;cas-client-core&lt;/artifactId&gt; &lt;version&gt;3.6.0&lt;/version&gt; &lt;/dependency&gt; 

讯享网
  1. 配置 Shiro
讯享网@Configuration public class <em>Shiro</em>Config { @Bean public CasRealm casRealm() { CasRealm realm = new CasRealm(); realm.setCasServerUrlPrefix(&quot;https://cas.example.com/cas&quot;); realm.setCasService(&quot;https://myapp.example.com/cas&quot;); realm.setDefaultRoles(&quot;user&quot;); realm.setRoleAttributeNames(&quot;memberOf&quot;); return realm; } @Bean public DefaultWebSecurityManager securityManager() { DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); manager.setRealm(casRealm()); return manager; } @Bean public <em>Shiro</em>FilterFactoryBean <em>shiro</em>Filter() { <em>Shiro</em>FilterFactoryBean filter = new <em>Shiro</em>FilterFactoryBean(); filter.setSecurityManager(securityManager()); filter.setLoginUrl(&quot;https://cas.example.com/cas/login?service=https://myapp.example.com/cas&quot;); filter.setSuccessUrl(&quot;/home&quot;); filter.setUnauthorizedUrl(&quot;/403&quot;); filter.setFilterChainDefinitionMap(Collections.singletonMap(&quot;/&quot;, &quot;authc&quot;)); return filter; } } 
  1. 配置 CAS:
@Configuration public class CasConfig { @Bean public CasAuthenticationFilter casAuthenticationFilter() { CasAuthenticationFilter filter = new CasAuthenticationFilter(); filter.setCasServerLoginUrl(&quot;https://cas.example.com/cas/login&quot;); filter.setServerName(&quot;https://myapp.example.com/cas&quot;); filter.setAuthenticationSuccessHandler(authenticationSuccessHandler()); filter.setAuthenticationFailureHandler(authenticationFailureHandler()); return filter; } @Bean public SimpleUrlAuthenticationSuccessHandler authenticationSuccessHandler() { SimpleUrlAuthenticationSuccessHandler handler = new SimpleUrlAuthenticationSuccessHandler(); handler.setDefaultTargetUrl(&quot;/home&quot;); handler.setAlwaysUseDefaultTargetUrl(true); return handler; } @Bean public SimpleUrlAuthenticationFailureHandler authenticationFailureHandler() { SimpleUrlAuthenticationFailureHandler handler = new SimpleUrlAuthenticationFailureHandler(); handler.setDefaultFailureUrl(&quot;/login?error=true&quot;); return handler; } @Bean public FilterRegistrationBean&lt;CasAuthenticationFilter&gt; casFilterRegistrationBean() { FilterRegistrationBean&lt;CasAuthenticationFilter&gt; registration = new FilterRegistrationBean&lt;&gt;(); registration.setFilter(casAuthenticationFilter()); registration.addUrlPatterns(&quot;/*&quot;); registration.setName(&quot;CAS Authentication Filter&quot;); registration.setOrder(1); return registration; } @Bean public ServletListenerRegistrationBean&lt;SingleSignOutHttpSessionListener&gt; singleSignOutHttpSessionListener() { ServletListenerRegistrationBean&lt;SingleSignOutHttpSessionListener&gt; registration = new ServletListenerRegistrationBean&lt;&gt;(); registration.setListener(new SingleSignOutHttpSessionListener()); registration.setOrder(2); return registration; } @Bean public ServletRegistrationBean&lt;Servlet&gt; casValidationServletRegistrationBean() { ServletRegistrationBean&lt;Servlet&gt; registration = new ServletRegistrationBean&lt;&gt;(); registration.setServlet(new Cas20ProxyReceivingTicketValidationFilter()); registration.addUrlMappings(&quot;/cas/*&quot;); registration.setName(&quot;CAS Validation Filter&quot;); registration.setOrder(3); return registration; } } 
  1. 创建一个 HomeController:
讯享网@Controller public class HomeController { @GetMapping(&quot;/home&quot;) public String home() { return &quot;home&quot;; } @GetMapping(&quot;/403&quot;) public String error403() { return &quot;403&quot;; } } 
  1. 创建一个 CAS 认证服务器:
@<em>SpringBoot</em>Application public class CasServerApplication { public static void main(String[] args) { <em>Spring</em>Application.run(CasServerApplication.class, args); } } 
  1. 创建一个 CAS 客户端:
讯享网@<em>SpringBoot</em>Application @EnableScheduling public class CasClientApplication { public static void main(String[] args) { <em>Spring</em>Application.run(CasClientApplication.class, args); } } 

这就是一个简单的 Spring Boot + Shiro + CAS 的示例应用程序。

小讯
上一篇 2025-04-22 12:28
下一篇 2025-04-17 12:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/141926.html