cas 单点登录_cas单点登录自定义登录验证

前面我们讲解了cas的简单连接数据库以及简单的加密,可是有时候我们的登录可能不是cas原有的逻辑,我们就必须要重新cas的登录验证以到达自己想要的效果,好在cas提供这些东西给我们自己重写。但是在重写这些之前,需要了解一下几个注解以及一个配置文件

注解:@Configuration、@EnableConfigurationProperties(CasConfigurationProperties.class)(这个是重写一些东西必须得加上的)。

配置文件

就是在resources新建一个mata-inf的文件夹,然后新建一个交spring.factories的文件。这里面存放的就是我们要放置的类(具体可以查看一下官方文档)。

下面正式开始我们的自定义登录验证的第一步。我们需要继承某些类,其实cas

已经帮我弄好了一些抽象类,比如AbstractUsernamePasswordAuthenticationHandler,或者是jdbc的认证,其实这些我们都可以自己继承然后重写。我们这边就用AbstractUsernamePasswordAuthenticationHandler这个作为例子把:

13babe2736259fcda9e3d6d13d7f2f48.png
public class Login extends AbstractUsernamePasswordAuthenticationHandler { private static final org.slf4j.Logger LOGGER =LoggerFactory.getLogger(Login.class);public Login(String name, ServicesManager servicesManager, PrincipalFactory principalFactory,Integer order) {super(name, servicesManager, principalFactory, order);// TODO Auto-generated constructor stub}//private final String sql="select password from sec_user where username=?";private String sql="select * from sec_user where username=?";@Overrideprotected HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential transformedCredential,String originalPassword) throws GeneralSecurityException, PreventedException {// TODO Auto-generated method stubDriverManagerDataSource d=new DriverManagerDataSource();d.setDriverClassName("com.mysql.jdbc.Driver");d.setUrl("jdbc:mysql://127.0.0.1:3306/test");d.setUsername("root");d.setPassword("root");JdbcTemplate template=new JdbcTemplate();template.setDataSource(d);String username=transformedCredential.getUsername();String pd=transformedCredential.getPassword();查询数据库加密的的密码UserInfo user=template.queryForObject(sql, new Object[]{username}, new BeanPropertyRowMapper(UserInfo.class));//if(sqlpd.equals(pd)){//return createHandlerResult(transformedCredential, principalFactory.createPrincipal(username, null), null);//}if(user==null){throw new FailedLoginException("没有该用户");}//返回多属性Map map=new HashMap<>();map.put("email
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值