SSM集成shiro权限管理

ssm整合shiro权限管理-干货 一、    表结构(表关系)user、role、user_role、permission、role_permission,用户,角色,权限相互之间多对多二、配置文件1、spring-shiro.xmlloginUrl是认证前可以访问的URL,通常是登录页面或者登录的方法路径successUrl是认证成功之后跳转的URL(可以是页面路径,也可以是方法)unauthorizedUrl是经过认证后,没有... 阅读详情

这几天在学习了shiro权限管理框架,在刚开始的时候学的时候因为这个配置问题困扰了我很长时间,所以在这篇文章我整合了自己用SSM搭建shiro权限框架的过程。

 

1.配置

  1.1jar包

在项目配置开始前需要先导入shiro的相关jar包,下载地址:https://mvnrepository.com/:

如果你的项目时maven项目的话只需要在pom.xml中添加以下几个依赖:

<!-- shiro核心包 -->
    <dependency>
	    <groupId>org.apache.shiro</groupId>
	    <artifactId>shiro-core</artifactId>
	    <version>1.3.2</version>
	</dependency>
    <!-- 添加shiro web支持 -->
    <dependency>
	    <groupId>org.apache.shiro</groupId>
	    <artifactId>shiro-web</artifactId>
	    <version>1.3.2</version>
	</dependency>
    <!-- 添加shiro spring支持 -->
    <dependency>
	    <groupId>org.apache.shiro</groupId>
	    <artifactId>shiro-spring</artifactId>
	    <version>1.3.2</version>
	</dependency>

其他版本的依赖自行从https://mvnrepository.com/查找。

1.2web.xml配置

其实shiro权限控制就是通过拦截器来进行判断用户权限的,因此shiro拦截器的配置跟springMVC的拦截器配置是类似的。

在web.xml文件中配置shiro的filter拦截器:

<!-- 上下文的位置 -->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- Spring的监听器 -->
  <listener>
    <listener-class>
  		org.springframework.web.context.ContextLoaderListener
  	</listener-class>
  </listener> 
<!-- 添加shiro过滤器 -->
   <filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <!-- 该值缺省为false,表示声明周期由SpringApplicationContext管理,设置为true表示ServletContainer管理 -->
        <param-name>targetFilterLifecycle</param-name>
        <param-value>true</param-value>
    </init-param>
    <!-- 设置spring容器filter的bean id,如果不设置则找与filter-name一致的bean-->
		<init-param>
			<param-name>targetBeanName</param-name>
			<param-value>shiroFilter</param-value>
		</init-param>
	
  </filter>
<!-- POST提交过滤器 UTF-8 -->
  <filter>
    <filter-name>encoding</filter-name>
    <filter-class>
  		org.springframework.web.filter.CharacterEncodingFilter
  	</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
 <!-- 前端控制器 -->
  <servlet>
    <servlet-name>shirodemo</servlet-name>
    <servlet-class>
  		org.springframework.web.servlet.DispatcherServlet
  	</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <!-- 此处不配置 默认找 /WEB-INF/[servlet-name]-servlet.xml -->
      <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>shirodemo</servlet-name>
    <!-- 1:*.do *.action 拦截以.do结尾的请求 (不拦截 jsp png jpg .js .css) 
		2:/ 拦截所有请求 (不拦截.jsp) 建议使用此种 方式 (拦截 .js.css .png) (放行静态资源) 
		3:/* 拦截所有请求(包括.jsp) 此种方式 不建议使用 -->
    
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

这里需要注意的一点是targetBeanName下面的shiroFilter这个value要记牢,后面在配置shiro和spring的时候会用到。

1.3配置applicationContext.xml

类似springmvc一样,需要写一个配置文件来配置拦截器。 

 <!--自定义Realm,注入认证凭证器-->
    <bean id="userRealm" class="cn.lijiahao.demo.realm.UserRealm">
    	<property name="credentialsMatcher" ref="credentialsMatcher"/>
    </bean>
    
    <!--securityManager管理-->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="userRealm"></property>
    </bean>
 
    <!--shiro 过滤器-->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!-- Shiro过滤器的核心安全接口,这个属性是必须的-->
        <property name="securityManager" ref="securityManager"/>
        <!--身份认证失败,则跳转到登录页面的配置-->
        <property name="loginUrl" value="/login.action"/>
        <property name="successUrl" value="/index.action"></property>
        <!--权限认证失败,则跳转到指定页面-->
        <property name="unauthorizedUrl" value="/unauthorized.action"/>
        <!-- Shiro连接约束配置,即过滤链的定义-->
        <property name="filterChainDefinitions">
            <value>
            	
            	/index.action=anon
            	/index.html=anon
            	/logout.action=logout
            	/register.action=anon
            	/login.jsp=anon
            	/test.action=authc
                /assets/**=anon
                /admin/**=roles[admin]
            	/user/**=roles[user]
                /**=authc
            </value>
        </property>
    </bean>

上面的id="shiroFilder"就是刚刚在web.xml里的argetBeanName下面的shiroFilter的value,这里必须要保持一致。

shiro的过滤拦截器需要加载一个securityManager安全管理器,这个必须要有的。

<!--securityManager管理-->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="realm" ref="userRealm"></property><!--注入自定义realm,若果没有自定义realm,可以不注入-->
    </bean>

定义拦截的内容在value标签里:

<!-- Shiro连接约束配置,即过滤链的定义-->
        <property name="filterChainDefinitions">
            <value>
            	
            	/index.action=anon<!-- 定义/index.action可以匿名访问-->
            	/index.html=anon
            	/logout.action=logout
            	/register.action=anon
            	/login.jsp=anon
            	/test.action=authc
                /assets/**=anon
                /admin/**=roles[admin]
            	/user/**=roles[user]
                /**=authc
            </value>
        </property>

shiro的过滤器总结如下:

过滤器简称

对应的java类

anon

org.apache.shiro.web.filter.authc.AnonymousFilter

authc

org.apache.shiro.web.filter.authc.FormAuthenticationFilter

authcBasic

org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter

perms

org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter

port

org.apache.shiro.web.filter.authz.PortFilter

rest

org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter

roles

org.apache.shiro.web.filter.authz.RolesAuthorizationFilter

ssl

org.apache.shiro.web.filter.authz.SslFilter

user

org.apache.shiro.web.filter.authc.UserFilter

logout

org.apache.shiro.web.filter.authc.LogoutFilter

anon:例子/admins/**=anon 没有参数,表示可以匿名使用。

authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,FormAuthenticationFilter是表单认证,没有参数

roles:例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。

perms:例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。

rest:例子/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。

port:例子/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString

是你访问的url里的?后面的参数。

authcBasic:例如/admins/user/**=authcBasic没有参数表示httpBasic认证

ssl:例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https

user:例如/admins/user/**=user没有参数表示必须存在用户, 身份认证通过或通过记住我认证通过的可以访问,当登入操作时不做检查

注:

anon,authcBasic,auchc,user是认证过滤器,

perms,roles,ssl,rest,port是授权过滤器

以上是配置过程

2.shiro认证

上面是我在用shiro的权限管理时的配置过程,项目配置过程要根据具体的项目来,可能会有点细节不同,但是总体不变,遇到不会的多去百度百度,因为是第一次接触shiro,所以我当时就一个配置过程就用了三天,所以不要急,遇到不会的多上网查查。

当你拦截器设置好了,可以成功拦截用户的操作,然后我们需要对用户进行权限验证。所以我们需要继承shiro的AuthorizingRealm拦截器,重写两个方法。 
- 重写doGetAuthenticationInfo方法是:登录验证,当需要登录的时候,就会调用该方法进行验证。 
- 重写doGetAuthorizationInfo方法:这个是授权验证,与上面的过滤器相结合。

思路如下: 
- 登录验证: 根据账号从数据库获取账号密码进行比较,如果一致则登录成功,就会保存到,否则登录失败 
- 授权验证:在登录成功后,根据用户id获取到该用户的权限,并把权限保存在安全管理器之中,当用户访问的时候,会从管理器中判断该用户是否有权限去访问该url。 

我这里只写了认证过程:

2.1自定义realm

public class UserRealm extends AuthorizingRealm{
	@Autowired
	private UserService userService;
	
	@Override
	public String getName() {
		return "userRealm";
	}

	// 支持什么类型的token
	@Override
	public boolean supports(AuthenticationToken token) {
		
		return token instanceof UsernamePasswordToken;
		
	}
	
	/**
	*
	*@Description 自定义授权方法
	*@param 
	*@author 李佳浩
	*@Date 2018年10月14日 下午12:16:34
	*/
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection token) {
		// TODO Auto-generated method stub
		System.out.println("111");
		return null;
	}
	/**
	*
	*@Description 自定义的认证方法
	*@param 
	*@author 李佳浩
	*@Date 2018年10月14日 下午12:15:57
	*/
	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
		//从token中获取用户身份信息
		String username = (String)token.getPrincipal();
		System.out.println("principal:"+username);
		//从数据库中查询username
		User user = userService.selectByUsername(username);
		//如果查询不到则返回null
		if(user==null) return null;
		
		String password = user.getPassword();
         
		//String salt = user.getSalt();//盐
		// 返回认证信息由父类AuthenticatingRealm进行认证
		//SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(user, password,ByteSource.Util.bytes(salt), getName());
        SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(user, password, getName());
		return simpleAuthenticationInfo;
	}

}

2.2controller层

/**
	 * @Description 用户登录
	 * @return
	 * @author 李佳浩
	 * @Date 2018年10月13日 下午6:39:01
	 */
	@RequestMapping("/login.action")
	public String login(HttpServletRequest request)throws Exception{
		// shiro在认证过程中出现错误后将异常类路径通过request返回
				String exceptionClassName = (String) request.getParameter("shiroLoginFailure");
				if(exceptionClassName!=null){
					if (UnknownAccountException.class.getName().equals(exceptionClassName)) {
						throw new CacheException("账号不存在");
					} else if (IncorrectCredentialsException.class.getName().equals(
							exceptionClassName)) {
						throw new CacheException("用户名/密码错误");
					}  else{
						throw new Exception();//最终在异常处理器生成未知错误
					}
				}
                //认证失败会回到login.jsp
				return "login";
	}

2.3dao层

我的项目用的是mybatis

代码如下:

public interface UserDao {
	
	User selectByid(@Param("id")String id);
	User selectByUsername(@Param("username")String username);
	List<User> selectAll();
	List<User> selectAllOrderPag(@Param("begin")int begin,@Param("size")int size);
	int selectCountOfRows();
	int add(User user);
	int deleteById(@Param("id")String id);
	int update(User user);
}

UserDao.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.lijiahao.demo.dao.UserDao">
	<!-- 通过用户名查询用户 -->
	<select id="selectByUsername" parameterType="String" resultType="user">
		select *
		from sys_user
		where username = #{username}
	</select>
	<!-- 通过id查找用户 -->
	<select id="selectById" parameterType="Integer" resultType="user">
		select *
		from sys_user
		where id = #{id}
	</select>
	<!-- 添加用户 -->
	<insert id="add" parameterType="user">
		insert into sys_user(id,username,password,name,dataOfBirth,age,gender)
		values(#{id},#{username},#{password},#{name},#{dataOfBirth},#{age},#{gender})
	</insert>
	<!-- 查询所有用户 -->
	<select id="selectAll" resultType="user">
		select * from sys_user
	</select>
	<!-- 根据begin,size来返回用户list列表 -->
	<select id="selectAllOrderPage" parameterType="Integer" resultType="user">
		select * from sys_user limit #{begin},#{size}
	</select>
	<!-- 返回所有信息的行数 -->
	<select id="selectCountOfRows" resultType="Integer">
		select count(*) from sys_user
	</select>
	
	<!-- 更新用户信息 -->
	<update id="update" parameterType="user">
		update sys_user
		<set>
			<if test="username !=null and username !=''">
				username=#{username},
			</if>
			<if test="password !=null and password !=''">
				password=#{password},
			</if>
			<if test="dataOfBirth !=null">
				dataOfBirth=#{dataOfBirth},
			</if>
			<if test="name !=null and name !=''">
				name=#{name},
			</if>
			<if test="age !=null and age !=''">
				age=#{age},
			</if>
			<if test="gender !=null and gender !=''">
				gender=#{gender},
			</if>
		</set>
		where id=#{id}
	</update>
	<!-- 通过id删除用户 -->
	<delete id="deleteById" parameterType="Integer">
		delete from sys_user where id = #{id}
	</delete>
</mapper>

2.4service层

service层就省略了,service层就是调用dao层实现。

2.5pojo层

public class User implements Serializable{
	private String id;
	private String username;
	private String password;
	private String name;
	private Timestamp dataOfBirth;//出生日期
	private int age;
	private String gender;
	private String salt;//盐
	private String locked;
	
	//省略set,get和构造方法方法
}

2.6数据库

数据库参照这篇文章https://blog.youkuaiyun.com/hzw2312/article/details/54612962

数据库结构现在地址:https://download.youkuaiyun.com/download/codehaohao/10722315

文章参考文章:

《spring整合shiro权限管理与数据库设计》

《Shiro实现(一): SSM整合笔记实现登录,授权功能》

SSM与Shiro集成实践:Maven项目中的用户权限管理 SSM框架是由Spring、SpringMVC和MyBatis三个框架整合而成的,广泛应用于Java Web开发中。它简化了Web层、业务层和数据层的开发,实现了模块化的功能划分,提高了开发效率和代码的可维护性。Realm 是 Shiro 中连接应用程序安全数据的桥梁。当认证或授权发生时,Shiro 会从配置好的 Realm 中获取相关数据。 阅读详情

相关推荐

CANdelaStudio实战:如何用19服务快速编辑DTC快照数据(附Excel模板)

本文详细介绍了在CANdelaStudio中利用19服务高效编辑DTC快照数据的进阶技巧。通过导出DTC池至Excel进行批量编辑,结合‘Copy from DTC Pool’功能实现配置复用,并分享了构建自定义Excel模板与字段映射的实用方法,帮助工程师将繁琐的手动配置转化为工程化的批量处理,大幅提升诊断数据库开发效率。

weixin_29230773的博客 191

SSM整合shiro进行权限控制以及shiro的一些特殊功能实现

项目结构图: 一、先新建一个maven项目,配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h

dreamer_8399的博客 1万+

Cisco三层交换机的详细配置

** 本文适用于新手小白以及微微基础的同学来用于参考,实验是在Cisco Packet Tracer Student 进行,实验最终效果如图所示,所有命令配置与图中的一致。 使用到的机器型号为:五台电脑,一台服务器,三个普通交换机(2960型号),一个三层交换机(3560-24PS),两台普通服务器(2811) 文章目录一、什么是三层交换机二、配置交换机步骤1.配置二层交换机2.配置三层交换机3.配置两台路由器以及最后一台电脑 一、什么是三层交换机 1.三层交换机 = 三层路由+二层交换机 2.工作在

真正的大师,永远都怀着一颗学徒的心。 4万+

SSM整合shiro 实现用户角色权限管理

ps: 一.环境:SpringMvc+spring+Mybatis,前后端分离,只支持单台项目(未实现单点登入); 二.需对shiro原理流程,有基础的理解,以及用户权限需求的应用场景明了,能更好项目整合; 三.shiro的基本构成: 1.Subject (接口) : 主体(当前用户) 定义了认证授权的相关函数,通过SecurityManage 安全管理器进行授权按认证 2...

Aron的博客 2382

Hadoop实战:用MapReduce分析YouTube视频数据集(附完整代码)

本文提供了一个完整的Hadoop MapReduce实战教程,指导读者使用MapReduce框架分析YouTube视频数据集,统计不同视频类别的数量分布。教程涵盖从数据获取、预处理、HDFS操作到Java代码编写、作业提交及结果可视化的全流程,并附有完整代码,帮助开发者深入理解分布式计算思想。

lilh34434的博客 198

IEEE 754浮点数与十六进制转换:从原理到实战避坑指南

在计算机系统中,数据的二进制表示与内存布局是底层开发的核心基础。IEEE 754标准定义了浮点数在内存中的精确格式,包括符号位、指数位和尾数位的分工,以及零、无穷大和NaN等特殊值的编码。理解这一原理对于处理原始字节流至关重要,尤其是在涉及跨平台或跨设备通信时。其技术价值在于,它能帮助开发者从根本上解决数据解析错误、通信协议不一致以及程序调试中的“灵异”问题。在嵌入式开发、网络通信(如Modbus协议)和固件解析等应用场景中,浮点数与十六进制的转换是高频操作。然而,字节序(大端/小端)是转换过程中最常见的“

weixin_33835103的博客 430

Shiro框架:SSM整合Shiro进行登陆认证和授权详细配置

本篇博客将进行详细介绍Shiro+Spring+SpringMVC+Mybatis+数据库整合并进行登陆认证和授权详细配置。 SSM的整合可以参考:https://blog.youkuaiyun.com/a745233700/article/details/81049763 下面主要介绍Shiro与SSM的整合和使用: 1、导入Shiro需要的maven依赖: &lt;!-- shiro --&......

张维鹏的博客 9132

飞塔防火墙和paloalto防火墙构建ipsec

一、配置fortigate防火墙1.防火墙配置上网功能1.1配置fortigate的wan1接口IP为100.100.100.2/24VLAN交换internal,IP地址为192.168.156.99/24。开启DHCP分配IP地址范围为192.168.156.110-192.168.156.2101.2配置访问互联网的缺省路由1.3配置访问互联网的安全策略2.配置与Paloalto防火墙的IPSECVPN。

weixin_44675999的博客 3738

Shiro 权限管理

一共5个表 用户表 角色表 权限表 用户角色中间表 角色权限中间表 权限验证 通过角色来判断有没有权限。 比如 if 用户有在用户角色中间表中有经理的角色, 就可以查看工资。这中判断比较笼统。适合比如实现不同的角色登录以后看到不同的菜单。 通过权限标识来判断, 这个就需要查出用户拥有的具体权限。 这个权限控制比较细致。 适合细致的,比如部门公司的管理员,只能修改该部门下的员工资料。 Shi...

心猿意码 5245

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性和易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理和线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 480

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用)

vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu

✅ 精选推荐文章 5702

ssm集成shiro进行权限管理,shiro退出(三)

第一步在maven中添加 <!--shiro shiro-all shiro-web spring-shiro--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</...

weixin_42275175的博客 456

26届数字IC秋招笔试面试全攻略 - CPU基础架构-数字IC设计专家

本文介绍了CPU基础架构的三大关键技术:流水线、冒险处理和指令集设计。首先解析了经典五级流水线结构(取指、译码、执行、访存、写回)及其性能指标。其次详细阐述了三种流水线冒险(数据、控制、结构)及解决方案,如数据前递、分支预测等。最后对比了RISC与CISC指令集特点,并以RISC-V为例说明指令格式设计原则。全文系统梳理了CPU核心架构知识,为数字IC设计提供重要参考。

2301_79143213的博客 931

SSM集成安全框架shiro

SSM集成安全框架shiro 前言,阅读这篇博客前可以先看看RBAC打造通用的权限管理平台http://blog.youkuaiyun.com/sinat_15153911/article/details/55046741 之前小编一直用拦截器来实现权限登录的拦截,现在使用高大上的shiro,多重拦截,大量拦截,其中一个安全知识点是md5颜值加密,噢,是盐值。现在就一步一步教大家怎么配置。 也可以加Q

2571

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm基础上集成shiro框架

项目开发过程中,发现需要用到权限分配,这个时候就展现了shiro的重要性。1、首先,什么是shiroshiro,一个java安全框架。Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。shiro的三个核心组件:Subject,Secu...

qq_38650223的博客 413

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

搭建Maven、SSM、shiro框架详细步骤

上一篇搭建Maven、SSM框架详细步骤,然后本文在此基础上,集成shiro框架 文章目录一、创建数据库(数据库名:shiro,多对多关系)二、修改pom.xml引入shiro包三、创建domain下的类,mapper接口,mapper.xml 文件1.创建User类、 UserMapper接口、UserMapper.xml2.创建Role类、 RoleMapper接口、RoleMapper....

樂小伍 523

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Maven+ssm+Shiro集成

ok!!!首先要集成一个Maven+ssm 假设我么已经集成好了。 Shiro在这套体系中所需要的组件有: web.xml中需要配置Shiro过滤器 Spring-shiro.xml中需要进行配置过滤器,SecurityManager,Realm Springmvc.xml中配置Shiro注解的启用,Shiro的异常统一处理/SpringMVC的异常处理Bean 一:导入Shiroja...

记录,记录,记录 711

ssm+shiro登录认证授权访问控制实现

我是一个小白,到处百度加上自己自学过的,简单的做了一下,当然只是最基础的,而且也不是很完善,正常来说应该是有用户表,角色表,权限表,用户与角色关系表,角色与权限关系表。 我写的可能也就我自己看懂,不喜勿喷!!! 一、准备工作 在进行ssm集成Shiro之前,需要准备相关的数据库表结构。如:用户表,角色表,权限表,用户与角色关系表,角色与权限关系表。 我呢,就没有准备这么多,设计相对简单,只准备了用户表和角色表,然后把权限作为列放在角色表里,初步试一下水。 二、表结构 用户表【注意:这里登录时用的是"user

weixin_44142888的博客 522

ssm整合shiro

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34075551的博客 85

SSM整合Shiro实现登陆认证完整demo(亲写)

前提:准备SSM项目,废话不多言,直接上代码。 一、添加依赖 <!--shiro依赖--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <...

畅游JAVA 703

07【掌握】ssm+shiro+Realm实现集成

【掌握】ssm+shiro+Realm实现集成 准备数据库 数据结构 张三 -user:query user:add user:update user:delete 李四 —》user:query user:add user:update 王五-----》user:query user:export 搭建ssm的环境 创建项目 修改pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.

qq_1595986877 205

跟着大宇学Shiro--------目录帖

一、我与Shiro 本系列Shiro已经重写,本次重写时间为2018年12月。博主已经在实际项目中接触快Shiro一年,也积累了不少使用心得。文章已经部分转移到了我的专栏里面:跟着大宇学Shiro博客专栏。 本系列教程源码:点击我下载源码 下面是本次重写的博客大纲,希望大宇能够帮助到正在学习shiro的你。我期待与大家一起交流学习、共同进步。 ...

大宇的博客,欢迎访问 1万+

第十节 Shiro集成SSM框架

一、搭建基本的SSM框架 首先告诉大家一个好消息,现在github的私有仓库免费咯。 好,开始本小节的教学。首先需要搭建一个SSM框架。如何搭建SSM框架,不在本文的讨论范围之内。你可以下载我的已经搭建好的基本的SSM框架,地址:点击我下载源码。我提供了一个基本的SSM框架与集成Shiro后的SSM框架。如果你时间比较急,你可以直接查看搭建后的代码并进入第三步中直接...

大宇的博客,欢迎访问 2437

Spring 集成Shiro 框架

1、导包 Spring集成shiro的依赖包 org.apache.shiro shiro-core 1.2.3 org.apache.shiro shiro-spring 1.2...

m0_37079722的博客 299

Shiro的使用详解(干货)

小伙伴们,以下仅是干货哦(思路) 基于SSM(Spring+SpringMVC+Mybatis)框架做的思路哦 一、自定义MyRealm类 首先在使用Shiro的时候我们要考虑在什么样的环境下使用: 登录的验证 对指定角色的验证 对URL的验证 基本上我们也就这三个需求,所以同时我们也需要三个方法: findUserByUserName(Str...

weixin_33860722的博客 187
上一篇: 阿里云服务器用SMTP的25号端口发送邮件问题
下一篇: 使用MySQL Yum存储库的快速在centos安装mysql5.7
Mr.LiJiaHao
博客等级 码龄10年 27粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值