和大家分享一下基础的shiro框架---认证:
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。
今天就是说一下shiro的简单验证登录的功能:
首先得引入依赖:
1.新建一个shiro.ini(注意:我这个写的是一个死文件,就是定义一些用户名和密码,进攻初学者理解shiro)
然后在里面写上一 用户名=密码 的格式:
[users]
admin=123
test=123456 注意,users必须是users,别随便定义,然后 我这里有两个用户名和密码,其中admin的密码就是123.
然后我们就可以用shiro来测试一下验证登录:
1.读取配置文件shiro.ini获取到(安全管理器)SecurityManager工厂
Factory
2.通过工厂获取SecurityManager
SecurityManager securityManager=factory.getInstance();
3.将安全管理器加入到当前的认证环境中
SecurityUtils.setSecurityManager(securityManager);
4.得到subject
Subject subject=SecurityUtils.getSubject();
//创建令牌,也就是得到你需要验证的帐号或密码:
AuthenticationToken token=new UsernamePassword("admin","123"); 这个是我传过来的账户和密码
//验证:
subject.login(token);
boolean isAuthenticated=subject.isAuthenticated();
sysotem.out.println("认证:"+isAuthenticated);
返回true,你就登录成功了,如过你输入错误的账户或密码,他可能会报错,这时候你需要在 subject.login(token) try一下,这里我就不try了。
2.你也可以自己写一个,一般是自己写一个,上面只是仅供娱乐测试,
下面,自己定义一个myrealm类,继承AuthorizingRealm
重写两个方法:
doGetAuthorizationInfo(授权)
doGetAuthenticationInfo(认证)
今天主要说的是 doGetAuthenticationInfo(认证)这个方法:在这个方法里面调用dao方法,然后将用户名和密码存进AuthentiacationInfo里面,这也是你需要返回的,下面上代码:
//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
// TODO Auto-generated method stub
UsernamePasswordToken token2=(UsernamePasswordToken) token;
String uname=token2.getUsername();
System.out.println("输入的用户名"+uname); //这个是你输入的用户名
//根据名字查询:
String pwd=new UserDao().search("admin");
AuthenticationInfo authenticationInfo=new SimpleAuthenticationInfo(uname,pwd,""); //最后这个可以为空,但当你有多个myrealm文件时就不能为空了,就需要写上this.getName();
return authenticationInfo;
}
然后你再写一个shiro-myrealm.ini文件,读取到你所写的myrealm类;下面马代码:
myRealm=com.shiro.MyRealm (这个是你刚刚所写的类的全限名,至于myRealm你随便定义就好)
securityManager.realms=$myRealm
然后进行测试,测试代码和上面一样,但是读取 shiro-realm.ini 文件
1.读取配置文件shiro.ini获取到(安全管理器)SecurityManager工厂
Factory
2.通过工厂获取SecurityManager
SecurityManager securityManager=factory.getInstance();
3.将安全管理器加入到当前的认证环境中
SecurityUtils.setSecurityManager(securityManager);
4.得到subject
Subject subject=SecurityUtils.getSubject();
//创建令牌,也就是得到你需要验证的帐号或密码:
AuthenticationToken token=new UsernamePassword("admin","123"); 这个是我传过来的账户和密码
//验证:
subject.login(token);
boolean isAuthenticated=subject.isAuthenticated();
sysotem.out.println("认证:"+isAuthenticated);
返回true,你就登录成功了,如过你输入错误的账户或密码,他可能会报错,这时候你需要在 subject.login(token) try一下,这里我就不try了。
好了,这些就是shiro最最基础的验证,希望对初学者有用,也记录一下自己所整理的shiro,明天再分享一下 shiro的授权的底层。