验证异常-Shiro的SimpleAuthenticationInfo的principal赋值问题

问题描述

Shiro的SimpleAuthenticationInfo的principal赋值问题

doGetAuthenticationInfo 在 return 时 SimpleAuthenticationInfo 的赋值

 return new SimpleAuthenticationInfo(user.getStr("username"), user.getStr("password"), getName());

验证可以通过,当改为

 return new SimpleAuthenticationInfo(new ShiroUser(user), user.getStr("password"), getName());

抛出异常

Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).

不知是哪里错了。

ShiroUser.java

 package com.xxx.shiro;

import java.io.Serializable;

import com.xxx.model.HrmResource;

public class ShiroUser implements Serializable {

    private static final long serialVersionUID = -9204685886813793596L;

    private Long id;
    private String username;
    private String lastname;
    private Integer status;

    public ShiroUser() {
    }

    public ShiroUser(HrmResource hrm) {
        this.setId(hrm.getLong("id"));
        this.setLastname(hrm.getStr("lastname"));
        this.setUsername(hrm.getStr("loginid"));
        this.setStatus(hrm.getInt("status"));
    }

    public String toString() {
        return getUsername();
    }

    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        ShiroUser other = (ShiroUser) obj;
        if (this.username == null) {
            if (other.username != null)
                return false;
        } else if (!this.username.equals(other.username))
            return false;
        return true;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
}
时间: 2024-09-19 11:51:39

验证异常-Shiro的SimpleAuthenticationInfo的principal赋值问题的相关文章

Shiro安全框架入门篇(登录验证实例详解与源码)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和JavaEE项目中都可以使用.它主要用来处理身份认证,授权,企业会话管理和加密等.Shiro的具体功能点如下: (1)身份认证/登录,验证用户是不是拥有相应的身份:  (2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限:即判断用户是否能做

Shiro 学习应用

和 Spring Security 一样,Shiro 也属于权限安全框架.和 Spring Security 相比,Shiro 更简单,学习曲线更低.关于 Shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述.这里记下学习 Spring 4.x + Shiro  1.2 的过程,可能有水平不够的地方,敬请指正. 一点概念 所有操作其实离不开理论.基础概念.虽然有点啰嗦.晦涩,但出于真正掌握的目的,仍是要强调其价值的.Shiro 为 Java 程序提供了认证(Authenticati

SpringMVC整合Shiro

这里用的是SpringMVC-3.2.4和Shiro-1.2.2,示例代码如下 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in

shiro 不执行授权方法 doGetAuthorizationInfo()

问题描述 shiro 不执行授权方法 doGetAuthorizationInfo() ShiroDbRealm.java 代码如下 public class ShiroDbRealm extends AuthorizingRealm { @Resource private UserService userService; /** * 认证回调函数,登录时调用. */ @Override protected AuthenticationInfo doGetAuthenticationInfo(A

Apache Shiro

Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心,简单来说,"认证"就是证明你是谁? Web 应用程序一般做法通过表单提交用户名及密码达到认证目的."授权"即是否允许已认证用户访问受保护资源.关于 Shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述,本文重点介绍 Shiro 在 Web Application 中如何实现验证码认证以及如何实现单点登录. 14 评论

Shrio登陆验证实例详细解读(转)

    摘要:本文采用了Spring+SpringMVC+Mybatis+Shiro+Msql来写了一个登陆验证的实例,下面来看看过程吧!整个工程基于Mavevn来创建,运行环境为JDK1.6+WIN7+tomcat7. 这里主要说了Shiro的搭建过程,Spring+SpringMVC+Mybatis的搭建过可以看这里Spring+Mybatis+SpringMVC+Maven+MySql搭建实例 整体工程免费下载:http://download.csdn.net/detail/evankak

【shiro】spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面

这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中,role->user是一对多,role->authority是多对多 shiros.sql内容: 1 /* 2 SQLyog Ultimate v11.24 (32 bit) 3 MySQL - 5.5.41 : Database - shiros 4 *********************

[.NET 基于角色安全性验证] 之一:基础知识

.NET 基于角色安全性验证的核心是主体(Principal)和标识(Identity)对象,其中主体负责角色或者组的验证,标识对象封装有关正在验证的用户或实体的信息.角色安全性验证通过生成可供当前线程使用的主体信息来支持授权,其中主体用关联的标识进行构造. public interface IPrincipal{ // Methods bool IsInRole(string role);  // Properties IIdentity Identity { get; }} public i

shiro 在jsp

Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮. 标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义. 引入标签 <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%> guest标签 用户没有身份验证时显示相应信息,即游客访问信息. <shiro:guest> 欢迎游客访问 </