老师,没有shiro注解的教程吗
老师,好像没有讲shiro怎么拦截其他url吧? 如果我不登陆 直接输入url也能访问?
老师,这里为什么不适用admin和role一对一的关系呢,还有可不可以不给admin加role这个属性,在controller层调用roleService去查rolename
老师,这里为什么只拿两级菜单,不是有很多级吗
老师,这个序列话接口为什么这边要有,不是要存到硬盘才用,之前mybatis的例子也没用到这个序列化接口 ,有点不明白什么情况用
老师,我有几个问题,1.这样写的话用户直接访问url也还是可以不登入就访问 这要怎么解决?
2.这里的这个错误跳转配置了,但是我配置了试图解析器,会默认去web-inf/jsp/下面。和上面的这个unauthorizeedUrl位置不一样,我发现是按照controller这里写的跳转,那是不是其实可以不必要配置unauthorizeedUrl
老师,这里如果有多个自定义realm要怎么写?
老师,凭证匹配器作用是什么?是登录的时候会把密码按照这里配置的md5加密两次然后和数据库密码对比?
这些配置都需要记住吗
老师,为什么这种 写法我只有root3 这条数据可以验证,我打印了一下控制台,while循环里面只循环一次。然后账号随便输,不在数据库里面的也没关系,只要密码是root就行。如果账号密码是1和1(也就是第二条)的时候也是说账号错误
老师,我这边确实自动建表了,但是里面没有存信息,查了两遍配置应该没有错啊
老师,为啥我设置了注解但是就算角色给错误的也能访问呢?
package com.bjsxt.shiro02; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; public class TestB { public static void main(String[] args) { //[1]解析shiro.ini 文件 IniSecurityManagerFactory factory =new IniSecurityManagerFactory("classpath:shiro04-jdbc.ini "); //[2]通过SecurityManager 工厂获得SecurityManager 实例 SecurityManager securityManager = factory.getInstance(); //[3]用SecurityUtils把SecurityManager 对象设置到运行 SecurityUtils.setSecurityManager(securityManager); //[4]通过SecurityUtils 获得主体 subject Subject subject = SecurityUtils.getSubject(); //[5]书写自己输入的账号和密码---相当于用户自己输入的账号和密码 //我们拿着自己书写用户名密码去和shiro.ini 文件中的账号密码比较 UsernamePasswordToken token = new UsernamePasswordToken("root","root"); try { //[6]进行身份的验证 subject.login(token); //[7]通过方法判断是否登录成功 if (subject.isAuthenticated()) { System.out.println("登录成功"); } }catch (IncorrectCredentialsException e){ System.out.println("凭证(密码)不正确"); }catch (UnknownAccountException e1){ System.out.println("用户名不正确"); }catch (ExpiredCredentialsException e){ System.out.println("凭证过期"); }catch (ExcessiveAttemptsException e){ System.out.println("尝试次数过多"); e.printStackTrace(); }catch (ConcurrentAccessException e){ System.out.println("竞争次数过多"); } } }
自定义Realm文件
package com.bjsxt.shiro02; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * 自定义Realm */ /** * 授权 */ public class UserRealm extends AuthorizingRealm { @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { return null; } /** * 认证 * @param authenticationToken * @return * @throws AuthenticationException */ @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { try{ Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shiro","root","zjx666888"); PreparedStatement preparedStatement = conn.prepareStatement("select uname,pwd from user"); ResultSet rs = preparedStatement.executeQuery(); while (rs.next()){ //把查到的数据集合给这个对象 SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(rs.getString("uname"),rs.getString("pwd"),"real"); return info; } }catch (Exception e){ } return null; } }
ini配置文件
数据库内容
老师为什么我输入sxt和123就可以登录成功,输入其他的就是密码错误??????????????
ssm-shiro2.zip
不知道为什么tomcat重新配置之后启动报错
老师,是不是版本的问题?上个问题中不行。。。。。。。。。。。。。。。。。。。。。。
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2024 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637