`
这些年
  • 浏览: 399872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现权限控制

阅读更多

使用Tomcat实现页面访问控制主要有三种方式:

引用

 

  • 使用JDBCRealm利用数据库控制
  • 使用JNDIRealm利用远程访问控制
  • 使用MemoryRealm利用tomcat-users.xml文件控制

 


一、使用JDBCRealm利用数据库控制
1.The meaning of the attributes is as follow:

attribute

Meaning

driverName

The name of the driver needed to connect to the database

connectionURL

The connection URL used to connect to the database

userTable

The user's tables

userNameCol

The column in the user's table that contains the name

userCredCol

The column in the user's table that contains the password

userRoleTable

The user's roles table

roleNameCol

The column in the user's table that contains a role given to a user

connectionName

The name to use when connecting to the database. (Optional)

connectionPassword

The password to use when connecting to the database. (Optional)

digest

The algorithm used for digest passwords or "No" for plain passwords, the values can be "MD5", "MD2", "SHA", etc... (Optional)


2.server.xml
文件配制

Java代码

  1. <Realm className="org.apache.catalina.realm.JDBCRealm"
  2. driverName="com.mysql.jdbc.Driver"
  3. connectionURL="jdbc:mysql://localhost:3306/globalapp"
  4. connectionName="root" connectionPassword="x"
  5. roleNameCol="role_name" userCredCol="user_pass"
  6. userNameCol="user_name" userRoleTable="user_roles"
  7. userTable="users" debug="50"/>

<Realm className="org.apache.catalina.realm.JDBCRealm"

       driverName="com.mysql.jdbc.Driver"

       connectionURL="jdbc:mysql://localhost:3306/globalapp"

       connectionName="root" connectionPassword="x"

       roleNameCol="role_name" userCredCol="user_pass"

       userNameCol="user_name" userRoleTable="user_roles"

       userTable="users" debug="50"/>

 

引用


connectionURL
connectionNameconnectionPassword不能拼在一起使用一个符串,虽然Tomcat doc上使用的是这种方法,但试了很多次都没能成功。具体原因不详。如果有高手解决还望说明一下。


3.web.xml
文件配制

Xml代码

  1. <security-constraint>
  2. <web-resource-collection>
  3. <web-resource-name>Global App</web-resource-name>
  4. <url-pattern>/*</url-pattern>
  5. </web-resource-collection>
  6. <auth-constraint>
  7. <role-name>admin</role-name>
  8. </auth-constraint>
  9. </security-constraint>
  10.  
  11. <!-- 这是FORM验证 -->
  12. <login-config>
  13. <auth-method>FORM</auth-method>
  14. <realm-name>Global App DIGEST</realm-name>
  15.  
  16. <form-login-config>
  17. <form-login-page>/accessConsole/login.jsp</form-login-page>
  18. <form-error-page>/accessConsole/error.jsp</form-error-page>
  19. </form-login-config>
  20.  
  21. </login-config>
  22.  
  23. <security-role>
  24. <description>
  25. The role that is required to log into the Global application
  26. </description>
  27. <role-name>admin</role-name>
  28. </security-role>

    <security-constraint>

       <web-resource-collection>

            <web-resource-name>Global App</web-resource-name>

            <url-pattern>/*</url-pattern>

        </web-resource-collection>

        <auth-constraint>                           

            <role-name>admin</role-name>

        </auth-constraint>

    </security-constraint>

 

    <!-- 这是FORM验证 -->

    <login-config>

        <auth-method>FORM</auth-method>

        <realm-name>Global App DIGEST</realm-name>

       

        <form-login-config>

          <form-login-page>/accessConsole/login.jsp</form-login-page>

          <form-error-page>/accessConsole/error.jsp</form-error-page>

        </form-login-config>

        

    </login-config>

 

    <security-role>

        <description>

          The role that is required to log into the Global application

        </description>

        <role-name>admin</role-name>

    </security-role>


4.
数据库表建设

Sql代码

  1. create table users (
  2. user_name varchar(15) not null primary key,
  3. user_pass varchar(15) not null
  4. );
  5.  
  6. create table user_roles (
  7. user_name varchar(15) not null,
  8. role_name varchar(15) not null,
  9. primary key (user_name, role_name)
  10. );
  11.  
  12. insert into users values("xwood", "xwood");
  13. insert into user_roles values("xwood", "admin");

create table users (

  user_name         varchar(15) not null primary key,

  user_pass         varchar(15) not null

);

 

create table user_roles (

  user_name         varchar(15) not null,

  role_name         varchar(15) not null,

  primary key (user_name, role_name)

);

 

insert into users values("xwood", "xwood");

insert into user_roles values("xwood", "admin");



这里除了采用FORM验证外还可以采用BASIC验证,别外还有一种客户端证书验证方法没有用过。采用BASIC验证方法只需要将<form-login-config>标签去掉即可。
二、使用JNDIRealm利用远程访问控制

引用


还未具体研究


三、使用MemoryRealm利用tomcat-users.xml文件控制
1.server.xml
配置

Xml代码

  1. <Resource name="UserDatabase" auth="Container"
  2. type="org.apache.catalina.UserDatabase"
  3. description="User database that can be updated and saved"
  4. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  5. pathname="conf/tomcat-users.xml" />
  6. <Realm className="org.apache.catalina.realm.MemoryRealm"
  7. resourceName="UserDatabase"/>

<Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

<Realm className="org.apache.catalina.realm.MemoryRealm"

       resourceName="UserDatabase"/>


其中,UserDatabaseserver.xml中已经完成配置
2.tomcat-users.xml
配置

Xml代码

  1. <role rolename="admin"/>
  2. <role rolename="user"/>
  3.  
  4. <user username="xwood" password="xwood" roles="admin"/>

  <role rolename="admin"/>

  <role rolename="user"/>

 

  <user username="xwood" password="xwood" roles="admin"/>


3.web.xml
配置

引用


JDBCRealm相同

 

分享到:
评论

相关推荐

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    基于Shiro 拦截URL,实现权限控制

    在这个主题中,“基于Shiro拦截URL,实现权限控制”意味着我们将探讨如何利用Shiro来管理应用程序中的访问权限,确保用户只能访问他们被授权的资源。 首先,我们需要理解Shiro的三个核心概念: 1. 身份验证...

    struts2拦截器实现权限控制

    这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的验证。 在Struts2中,拦截器是基于AOP(面向切面编程)的概念设计的,它们在Action调用前后执行,可以添加额外...

    原创layui与thinkphp最细级别权限控制后台,通过读取代码注释来实现权限控制

    本项目结合了layui前端框架和thinkphp后端框架,实现了最细粒度的权限控制,通过读取代码注释的方式来决定用户权限,这是一种创新且灵活的方法。 layui是一款轻量级、模块化的前端UI框架,提供了丰富的组件和样式,...

    自定义注解+AOP实现权限控制.zip

    详情请查看博客:&lt;a href='https://blog.csdn.net/byteArr/article/details/103984725'&gt; springboot+自定义注解+AOP实现权限控制(一)和&lt;a href='https://blog.csdn.net/byteArr/article/details/103992016'&gt; ...

    filter 实现权限控制

    本文将详细探讨如何通过`Filter`实现权限控制,以及与RBAC(Role-Based Access Control,基于角色的访问控制)的关系。首先,让我们理解`Filter`的概念。 `Filter`是Java Servlet API中的一个重要组件,它允许我们...

    Struts2利用拦截器实现权限控制

    要实现权限控制,首先需要创建一个自定义的拦截器。这通常涉及创建一个实现了`Interceptor`接口的类,并重写`intercept`方法。在这个方法中,我们可以添加验证用户权限的逻辑。 ```java public class ...

    springboot整合shiro实现权限控制.zip

    本文将详细探讨如何在Spring Boot项目中整合Shiro以实现权限控制。 首先,我们要理解Spring Boot与Shiro的基本概念。Spring Boot基于Spring框架,通过自动配置和起步依赖简化了项目的构建和部署。它提倡约定优于...

    Vue后台管理系统实现权限控制

    本教程将深入探讨如何使用Vue.js和element-ui组件库实现一个完善的后台管理系统的权限控制机制。Vue.js是一个轻量级的前端框架,而element-ui则为Vue提供了丰富的UI组件,axios则常用于处理HTTP请求,Vuex则是Vue的...

    权限控制,js控制js控制js控制权限控制

    本文将深入探讨JavaScript如何实现权限控制,以及它在这个过程中的重要性。 首先,权限控制的核心目的是限制用户对资源的访问,确保只有具有适当权限的用户或程序才能执行特定的操作。在JavaScript中,权限控制主要...

    springboot整合Security、OAuth2实现权限控制

    在本教程中,我们将探讨如何将Spring Boot与Spring Security和OAuth2结合,实现在分布式系统中的权限控制,并利用Redis存储认证和授权信息。 首先,Spring Security是Spring生态中的核心安全组件,它提供了全面的...

    java spring AOP权限控制

    Java Spring AOP 权限控制是指在 Java Spring 框架下使用 Aspect-Oriented Programming(面向方面编程)技术来实现权限控制。权限控制是指对用户的访问权限进行控制和管理,以确保系统的安全和可靠性。在 Java ...

    SpringBoot 权限控制(菜单控制,页面元素控制,url控制)

    综上所述,SpringBoot结合RBAC思想,可以有效地实现权限控制,覆盖从菜单到页面元素再到URL的多层次管理。通过灵活运用Spring Security提供的各种工具和注解,我们可以构建出安全且易于维护的权限管理系统。

    vue自定义指令和动态路由实现权限控制

    主要介绍了vue自定义指令和动态路由实现权限控制的方法,帮助大家更好的理解和学习vue,感兴趣的朋友可以了解下

    Spring Security如何使用URL地址进行权限控制

    我们可以使用Spring Security来实现权限控制,使得不同用户只能访问自己所拥有的资源。 在Spring Security中,权限控制是通过FilterSecurityInterceptor来实现的。FilterSecurityInterceptor是一个过滤器,它可以...

    java写的一个权限控制的插件

    4. **过滤器与拦截器**:为了实现权限控制,插件可能利用了Servlet Filter或者Spring MVC的Interceptor机制,对请求进行预处理,判断用户是否有权限执行当前操作。 5. **动态权限分配**:在某些情况下,权限可能...

    C# winform 权限控制 包括角色 用户 权限设置

    在C# WinForm应用开发中,权限控制是一个关键的安全组件,它确保了只有授权的用户才能访问特定的功能或数据。本教程将详细讲解如何在C#...在实际项目中,应根据具体需求设计和实现权限控制,确保系统的安全性和稳定性。

    ssm+自定义标签+自定义注解 实现权限细粒度控制

    其次,自定义标签则是在视图层面上实现权限控制。在JSP页面中,可以定义一个如`&lt;permission:check&gt;`的标签,用于检查用户是否拥有访问当前页面或元素的权限。如果权限验证失败,标签可以自动隐藏相关内容或者重定向...

    sharepoint 2010权限控制详解

    以上步骤展示了如何在SharePoint 2010中实现权限控制的具体操作。掌握这些知识,可以帮助企业构建适合其业务需求的权限管理策略,确保企业信息的安全性和管理的有序性。在操作过程中,需要特别注意权限的继承和覆盖...

    react实现菜单权限控制的方法

    在 React 中,可以使用 Route 和 Menu 组件来实现权限控制。Route 组件用于定义路由规则,而 Menu 组件用于定义菜单项。 首先,让我们看一下路由配置: ```jsx export default ( ) ``` ...

Global site tag (gtag.js) - Google Analytics