2024年4月28日
        
        
        
            引入依赖 <dependencies> <!-- shiro-spring --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> </dependency> <!-- buji-pac4j --> <dependency> <groupId>io.buji</groupId> <artifactId>buji-pac4j</artifactId> <version>4.1.0</version> </dependency> <!-- shiro-cas --> <dependency> <groupId>org.pac4j</groupId> <artifactId>pac4j-cas</artifactId> <version>3.6.1</version> </dependency> </dependencies> 配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- 配置单点退出过滤器 --> <filter> <filter-name>ssoutFilter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> <!-- 配置CAS服务URL前缀 --> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>http://sso.pinyougou.com</param-value> </init-param> </filter> <filter-mapping> <filter-name>ssoutFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置Spring核心监听器 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置Spring委派过滤器代理(要求Spring容器中有了个b……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            代码如下: public class UserRealm extends Pac4jRealm(){ @Override public AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // TODO Auto-generated method stub System.out.println("Onece"); Set<String> roles=new HashSet()<>; roles.add("admin"); SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); authorizationInfo.setRoles(roles); return authorizationInfo ; } 在controller层有一个方法 @RequestMapping("/hello2") @ResponseBody public String hello2() { SecurityUtils.getSubject().checkRoles("user"); return "success"; } 当执行chekRoles 执行了doGetAuthorizationInfo() 方法 但是要打印两个"Onece" 请问这是什么原因呢? 原因……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            现在咱们开发环境搭好了就一切好办了 只需要增加两个类,修改两个配置文件就ok了 第一个类,登录验证类 类里面用到了 com.mysql.jdbc.Driver,所以你们懂得,记得在pom里面加入对mysql驱动的依赖,上一篇里提到过了 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            VIP文章 H阿布 于 2018-01-27 17:26:05 发布 一、初步认识buji-pac4j 公司单点登录cas客户端用的是shiro的shiro-cas模块,但从源码看来,shiro不建议再使用shiro-cas,也就是说shiro-cas模块的相关都被shiro标注为@Deprecated,并推荐使用的代替方案……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            [ logger(“org.springframework.security”,DEBUG,[‘STDOUT’],false)logger(“grails.plugin.springsecurity”,DEBUG,[‘STDOUT’],false)logger(“org.pac__4j",DEBUG,[‘STDOUT’],false) 1 2 3 ](https://blog.csdn.net/yangbo_hr/article/details/105531294)……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            之前没在shiroConfig里加public FilterRegistrationBean singleSignOutFilter() ;可以实现单点登录,登出有问题,家里这个方法后,启动报错: java.lang.IllegalArgumentException: casServerUrlPrefix cannot be null. at org.jasig.cas.client.util.CommonUtils.assertNotNull(CommonUtils.java:87) at org.jasig.cas.client.session.SingleSignOutHandler.init(SingleSignOutHandler.java:130) at org.jasig.cas.client.session.SingleSignOutFilter.init(SingleSignOutFilter.java:54) ………………………………… package com.audaque.gm.config; import com.audaque.gm.modules.sys.shiro.ShiroPermsFilterFactoryBean; import com.audaque.gm.modules.sys.shiro.UserFilter; import com.audaque.gm.modules.sys.shiro.UserPermFilter; import com.audaque.gm.modules.sys.sso.CallbackFilter; import com.audaque.gm.modules.sys.sso.CasRealm; import com.audaque.gm.support.shiro.listener.UserSessionListener; import com.audaque.gm.support.shiro.session.UserSessionDAO; import com.audaque.gm.support.shiro.session.UserSessionFactory; import io.buji.pac4j.filter.LogoutFilter; import io.buji.pac4j.filter.SecurityFilter; import io.buji.pac4j.subject.Pac4jSubjectFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.session.SessionListener; import org.apache.shiro.session.mgt.SessionManager; import org.apache.shiro.session.mgt.eis.MemorySessionDAO; import org.apache.shiro.session.mgt.eis.SessionDAO; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.apache.shiro.web.servlet.SimpleCookie; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.jasig.cas.client.session.SingleSignOutFilter; import org.jasig.cas.client.session.SingleSignOutHttpSessionListener; import org.pac4j.core.config.Config; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.filter.DelegatingFilterProxy;……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            1.在pom.xml中添加: <<span><strong>dependency</strong></span>> <<span><strong>groupId</strong></span>>org.pac4j</<span><strong>groupId</strong></span>> <<span><strong>artifactId</strong></span>>pac4j-cas</<span><strong>artifactId</strong></span>> <<span><strong>version</strong></span>>2.1.0</<span><strong>version</strong></span>> </<span><strong>dependency</strong></span>> <<span><strong>dependency</strong></span>> <<span><strong>groupId</strong></span>>io.buji</<span><strong>groupId</strong></span>> <<span><strong>artifactId</strong></span>>buji-pac4j</<span><strong>artifactId</strong></span>> <<span><strong>version</strong></span>>3.0.0</<span><strong>version</strong></span>> </<span><strong>dependency</strong></span>> <span>2.新增Pac4jConfig.java文件</span> <pre data-index="5" name="code"></pre><br> 3.修改ShiroConfig.java文件 <span> 增加 </span> <span></span><pre data-index="9" name="code"></pre><br> <span>修改Bean shiroFilter 方法,增加</span>……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            cas client与shiro集成框架pac4j源码分析 一、前言 二、安全过滤器 三、CallbackFilter 四、LogoutFilter 一、前言 pac4j-cas关键filter有3个,分别为io.buji.pac4j.filter.SecurityFilter、io.buji.p……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            告别shiro-cas单点登录集成库,这款简单且强壮的Java Web安全引擎pac4j你值得拥有 一、缘何遇到该引擎 二、引擎能力 三、引擎特征 四、十大核心组件 五、项目移植 5.1 导包 5.2 配置 5.3 重写认证和授权函数 5.4 调试 5.4.1 CAS验证原理 5.4.2 单点登录流程分析 5.5 完成 pac4j官网地址传送门。 pac4j……
        
        阅读全文
    
    
    
        
        
            2024年4月28日
        
        
        
            JFinal最强集成方案 Jifnal+Shiro+Pac4j+Cas+Redis 简介 CAS Pac4J 集成配置 Jifnal+Shiro+Pac4j+Cas+Redis 简介 公司以前使用了Jifnal做了一个基础后台管理系统,主要使用了Jifnal+Shiro进行开发.随后交由我 进行后续的升级以及功能的完善.由于jfinal和shiro集成的时候默认使用的Ehcache对集群部署以 及分布式部署会出问题,……
        
        阅读全文