QQ 1274510382
Wechat JNZ_aming
商业联盟 QQ群538250800
技术搞事 QQ群599020441
解决方案 QQ群152889761
加入我们 QQ群649347320
共享学习 QQ群674240731
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。
叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)
纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!
#本文为广告系统自动投放广告
# 如有侵权 删改 请速速联系我们
4.2 自定义认证 Realm
ShiroRun 代码不需要做任何变化。
4.2.1 自定义 Realm 类
在项目中新建 com.samuel.realm.MyRealm
public class MyRealm extends AuthenticatingRealm {
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token)
throws AuthenticationException {
System.out.println("执行认证");
//用户名
String username = token.getPrincipal().toString();
//密码
String pwd = new String((char[])token.getCredentials());
System.out.println(username+" "+pwd);
//先从数据库查询 select * from user where username=? 查看用户名是否存在
if(username.equals("admin")){
//假设用户名为 admin 时能从数据库中查询出来
//根据之前查询出来的用户信息获取密码。假设查询出来的密码是 pwd
String password= "pwd";
//此处需要注意,第二个参数是从数据库查询出来的密码,而不是传递过来的密码。
//第三个参数自定义。但是尽量不重复了。常直接使用用户名当做 realname 名字。
AuthenticationInfo info = new
SimpleAuthenticationInfo(token.getPrincipal(),password,"realmname");
//shiro 会判断从数据库查询出来的密码和客户端传递过来的密码是否一致。
return info;
}
//返回 null 说明用户名不存在。
return null;
} }