欢迎光临
shiro认证-ssm,原创Kafka学习笔记
   

shiro认证-ssm,原创Kafka学习笔记

一、shiro认证


1、导入pom依赖

org.apache.shiro

shiro-core

1.3.2

org.apache.shiro

shiro-web

1.3.2

org.apache.shiro

shiro-spring

1.3.2

2、web.xml配置

shiroFilter

org.springframework.web.filter.DelegatingFilterProxy

targetFilterLifecycle

true

shiroFilter

/*

3、通过逆向工程将五张表生成对应的model、mapper

generatorConfig.xml:

enableCountByExample=“false” enableDeleteByExample=“false”

enableSelectByExample=“false” enableUpdateByExample=“false”>

enableCountByExample=“false” enableDeleteByExample=“false”

enableSelectByExample=“false” enableUpdateByExample=“false”>

enableCountByExample=“false” enableDeleteByExample=“false”

enableSelectByExample=“false” enableUpdateByExample=“false”>

enableCountByExample=“false” enableDeleteByExample=“false”

enableSelectByExample=“false” enableUpdateByExample=“false”>

enableCountByExample=“false” enableDeleteByExample=“false”

enableSelectByExample=“false” enableUpdateByExample=“false”>

shiro认证-ssm,原创Kafka学习笔记,第1张

4、在ShiroUserMapper.xml中添加SQL语句

通过账号名查询用户信息:

select

from t_shiro_user

where userName = #{userName}

5、ShiroUserMapper.java

public ShiroUser queryByName(@Param(“userName”) String userName);

6、自定义Realm

意义在与程序员自己去定制认证方式、授权方式,调用queryByName,

与传统的登录通过账号密码的方式的区别:

传统的:是通过账号、密码在数据库中做统一的查询,and关键字查询

shiro的realm:只需要通过账号查询出用户信息。

shiro用户信息中的密码与前端界面的密码不匹配:

shiro中有一个内置的类AuthenticationInfo做数据库的密码与前端输入密码匹配,未匹配就不能登录。

注:真正的匹配操作是由shiro完成,也就是说需要重写realm中的认证方法

7、将文件交给spring管理

在service层新建ShiroUserService接口:

package com.lv.service;

import com.lv.model.ShiroUser;

import org.apache.ibatis.annotations.Param;

import java.util.Set;

/**

  • @author 小李飞刀

  • @site www.javaxl.com

  • @company

  • @create  2019-10-12 15:55

    */

    public interface ShiroUserService {

    int deleteByPrimaryKey(Integer userid);

    int insert(ShiroUser record);

    int insertSelective(ShiroUser record);

    ShiroUser selectByPrimaryKey(Integer userid);

    int updateByPrimaryKeySelective(ShiroUser record);

    int updateByPrimaryKey(ShiroUser record);

    public ShiroUser queryByName(String userName);

    }

    ShiroUserServiceImpl.java:

    package com.lv.service.impl;

    import com.lv.mapper.ShiroUserMapper;

    import com.lv.model.ShiroUser;

    import com.lv.service.ShiroUserService;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.stereotype.Service;

    @Service(“shiroUserService”)

    public class ShiroUserServiceImpl implements ShiroUserService {

    @Autowired

    private ShiroUserMapper shiroUserMapper;

    @Override

    public int deleteByPrimaryKey(Integer userid) {

    return shiroUserMapper.deleteByPrimaryKey(userid);

    }

    @Override

    public int insert(ShiroUser record) {

    return shiroUserMapper.insert(record);

    }

    @Override

    public int insertSelective(ShiroUser record) {

    return shiroUserMapper.insertSelective(record);

    }

    @Override

    public ShiroUser selectByPrimaryKey(Integer userid) {

    return shiroUserMapper.selectByPrimaryKey(userid);

    }

    @Override

    public int updateByPrimaryKeySelective(ShiroUser record) {

    return shiroUserMapper.updateByPrimaryKeySelective(record);

    }

    @Override

    public int updateByPrimaryKey(ShiroUser record) {

    return shiroUserMapper.updateByPrimaryKey(record);

    }

    @Override

    public ShiroUser queryByName(String userName) {

    return shiroUserMapper.queryByName(userName);

    }

    }

    **重写realm:**新建shiro包,新建Myrealm.java

    package com.lv.shiro;

    import com.lv.model.ShiroUser;

    import com.lv.service.ShiroUserService;

    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 org.apache.shiro.util.ByteSource;

    import org.springframework.stereotype.Service;

    /**

    • @author 小李飞刀

    • @site www.javaxl.com

    • @company

    • @create  2019-10-12 16:20

      */

      public class MyRealm extends AuthorizingRealm {

      private ShiroUserService shiroUserService;

      @Override

      protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

      return null;

      }

      @Override

      protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {

      System.out.println(“身份认证…”);

      String username = token.getPrincipal().toString();

      String password = token.getCredentials().toString();

      ShiroUser user = shiroUserService.queryByName(username);

      // 拿到数据库中的用户信息,放入token凭证中,用于controler进行对比

      AuthenticationInfo info = new SimpleAuthenticationInfo(

      user.getUsername(),

      user.getPassword(),

      ByteSource.Util.bytes(user.getSalt()),

      this.getName()

      );

      return info;

      小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      shiro认证-ssm,原创Kafka学习笔记,img,第2张

      shiro认证-ssm,原创Kafka学习笔记,img,第3张

      shiro认证-ssm,原创Kafka学习笔记,img,第4张

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

      如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

      shiro认证-ssm,原创Kafka学习笔记,img,第5张

      etName()

      );

      return info;

      小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

      深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

      因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

      [外链图片转存中…(img-ePQZXcCY-1710890599484)]

      [外链图片转存中…(img-9YakLITn-1710890599485)]

      [外链图片转存中…(img-ui8O9k2K-1710890599485)]

      由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

      如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

      [外链图片转存中…(img-dm7vPuyi-1710890599486)]

       
打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《shiro认证-ssm,原创Kafka学习笔记》
文章链接:https://goodmancom.com/wl/175939.html