全局会话过期时间的设置会覆盖单独会话的过期时间吗,哪个优先级高一些啊
java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap
我导入了commons.collections.4.3.jar还是没用
老师,我测试了一下,这里为什么只对密码验证有效而用户名验证无效。我测试的结果是当我输入的用户名无论是否与数据库中的用户名相同,但只要密码相同就能通过验证?能给一个准确一点的答复吗?查过资料但是没有说到过这类情况,代码也再三检查过没有问题!
老师你好,实现登录认证的测试,我成功了一次,然后再测试,后面就全都是未知验证异常,这是为什么
为什么要这样全部导进来, 从头写不好么,有问题都不知道怎么调试了,烦死了
老师,权限不足的状态码不应该是403吗,此处已经登录,为啥会抛出401状态码
温馨提示:
权限名是ROLE_开头
有个_
云盘这个项目的jar包至少缺2个 mybatis-spring 和serlvert-api的jar包
我是按照文档上的复制上去执行的,为什么执行不成功呢?
老师我的也是一点击提交就报未知错误
ssm-shiro.zip
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就可以登录成功,输入其他的就是密码错误??????????????
不知道为什么username和password接受值为空
老师,我登陆之后跳到了/login这个控制单元,但是用下面这行代码获得的对象却是null,不知道是怎么回事。
Object ex = request.getAttribute(FormAuthenticationFilter.DEFAULT_ERROR_KEY_ATTRIBUTE_NAME);
控制台没有报异常。
用业务层手动调用了一下自定义的realm,是可以登录的。
对于前后端分离的项目,比如说APP,我怎么在app端获取到服务器产生的token呢?
老师代码都是对的,但是跳转之后页面是这样的
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637