基于SSM+Shiro+Bootstrap实现用户权限管理系统,2024年最新计算机vb程序设计是什么意思

INSERT INTO t_shiro_permission (permission_code, permission_describe) VALUES (‘finance’, ‘财务模块操作权限’);

INSERT INTO t_shiro_permission (permission_code, permission_describe) VALUES (‘checkon’, ‘考勤模块操作权限’);




[]( )pom文件

========================================================================



<dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.13.2</version>

    <scope>test</scope>

</dependency>



<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>servlet-api</artifactId>

    <version>2.5</version>

    <scope>provided</scope>

</dependency>



<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>javax.servlet-api</artifactId>

    <version>3.1.0</version>

    <scope>provided</scope>

</dependency>

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>jstl</artifactId>

    <version>1.2</version>

</dependency>

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-webmvc</artifactId>

    <version>5.3.13</version>

</dependency>



<!-- mybatis 相关的依赖 -->

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jdbc</artifactId>

    <version>5.3.13</version>

</dependency>



<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.49</version>

</dependency>



<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid</artifactId>

    <version>1.2.8</version>

</dependency>



<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis</artifactId>

    <version>3.5.7</version>

</dependency>



<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis-spring</artifactId>

    <version>2.0.6</version>

</dependency>

<!-- shiro依赖-->

<dependency>

    <groupId>org.apache.shiro</groupId>

    <artifactId>shiro-core</artifactId>

    <version>1.8.0</version>

</dependency>

<dependency>

    <groupId>org.apache.shiro</groupId>

    <artifactId>shiro-spring</artifactId>

    <version>1.8.0</version>

</dependency>



<!--        分页插件-->

<dependency>

    <groupId>com.github.pagehelper</groupId>

    <artifactId>pagehelper</artifactId>

    <version>5.1.11</version>

</dependency>
<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<plugins>

    <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-compiler-plugin</artifactId>

        <version>3.1</version>

        <configuration>

            <source>1.8</source>

            <target>1.8</target>

        </configuration>

    </plugin>

    <plugin>

        <groupId>org.apache.tomcat.maven</groupId>

        <artifactId>tomcat7-maven-plugin</artifactId>

        <version>2.2</version>

        <configuration>

            <port>8087</port>

            <path>/ssm_shiro</path>

            <uriEncoding>UTF-8</uriEncoding>

        </configuration>

    </plugin>

</plugins>



[]( )项目结构

=======================================================================



![在这里插入图片描述](https://img-blog.csdnimg.cn/a8bf63d440154174bb5e2cf2a234192f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQnVn57uI57uT6ICFLg==,size_10,color_FFFFFF,t_70,g_se,x_16#pic_center)



[]( )核心源码

=======================================================================



**MyRealm自定义权限类,该类实现了用户认证与授权**



@Component

public class MyRealm extends AuthorizingRealm {

@Autowired

private ShiroUserMapper shiroUserMapper;

@Autowired

private UserPermissionMapper userPermissionMapper;



/**

 * 自定义授权方法

 * 思路:根据PrincipalCollection对象获取用户名,根据用户名查询对象,

 * 查询该用户在数据表中所对应的权限,并转换为set集合,存入SimpleAuthorizationInfo对象并返回

 * @param principalCollection

 * @return

 */

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {

    //获取用户名

    String username = (String) principalCollection.getPrimaryPrincipal();

    //根据用户名获取用户对象

    ShiroUser shiroUser = new ShiroUser();

    shiroUser.setUsername(username);

    ShiroUser user = shiroUserMapper.get(shiroUser);

    //用户非空判断

    if (user != null) {

        //获取用户所对应的权限

        UserPermission userPermission = new UserPermission();

        userPermission.setUser_id(user.getNoid());

        List<String> list = userPermissionMapper.list(userPermission);



        //List集合转为Set集合放入授权权限实例对象中

        Set<String> perms = new HashSet<>();

        for (String s : list) {

            perms.add(s);

        }

        SimpleAuthorizationInfo authorizationInfo=new SimpleAuthorizationInfo();

        authorizationInfo.addStringPermissions(perms);

        return authorizationInfo;

    }

    return null;

}



/**

 * 自定义认证方法,根据AuthenticationToken对象获取用户名,

 * 查询用户名对应的都系,并进行验证是否正确,最后返回AuthenticationInfo对象

 * @param authenticationToken

 * @return

 * @throws AuthenticationException

 */

@Override

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {

    String username = (String) authenticationToken.getPrincipal();

    ShiroUser shiroUser = new ShiroUser();

    shiroUser.setUsername(username);

    ShiroUser user = shiroUserMapper.get(shiroUser);

    if (user != null) {

        // 这一步就执行了对密码的验证

        AuthenticationInfo authcInfo=new SimpleAuthenticationInfo(user.getUsername(),user.getUserpwd()

                , getName());

        return authcInfo;

    } else {

        return null;

    }

}

}




**核心配置文件applicationContent.xml**



<property name="realm" ref="myRealm"/>
<!-- Shiro的核心安全接口,这个属性是必须的 -->

<property name="securityManager" ref="securityManager"/>

<!-- 身份认证失败,则跳转到登录页面的配置 -->

<property name="loginUrl" value="/user/login"/>

<!-- 权限认证失败,则跳转到指定页面 -->

<property name="unauthorizedUrl" value="/system/noauthor"/>

<!-- Shiro连接约束配置,即过滤链的定义 -->

<property name="filterChainDefinitions">

    <value>

        <!--                游客身份,表示登录就可以访问-->

        /loginPost=anon

        <!-- user赋值的不登录,无无法访问,直接就是认证失败。-->

        /system/*=user

        <!--   访问以finance打头的接口必须拥有finance权限-->

        /finance/*=perms[finance]

        <!--  访问以checkon打头的接口必须拥有checkon权限-->

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

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
img
img
img

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
img

临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。**

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
[外链图片转存中…(img-vKAPAyC6-1712569628675)]
[外链图片转存中…(img-3Eua78me-1712569628675)]
[外链图片转存中…(img-wu5OqwVj-1712569628676)]

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
[外链图片转存中…(img-f9Ys9c4W-1712569628676)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值