在WEB应用中使用mysql部署shiro安全框架
2011-09-23 15:49
441 查看
shiro框架提供了验证、授权、加密、会话管理等常用的安全功能,而且使用POJO式的API使得该框架能部署在大多数的环境中,此外还针对不同的情形提供了各种API实现,在数据存储上,其开放式的API使得我们在不同数据环境中进行方便自如的切换,shiro同样支持MYSQL方式,下面是使用MYSQL数据库的SHIRO配置:
这里需要说明的是,jdbcRealm.authenticationQuery,jdbcRealm.userRolesQuery,jdbcRealm.permissionsQuery配置行,相对应的时三个表users,user_roles,role_permissions,这三行是告诉SHIRO从何处获取授权的配置,他们是jdbc的预查询语句。authenticationQuery用于从users中查找密码来进行验证,查询后取得第一条记录的第一个字段进行验证。userRolesQuery用于从user_roles查找所属的角色,它可以是多行,但是要保证查询后的角色是第一个字段。permissionsQuery用于从role_permissions中查找权限字符串,同样要求是第一个字段,可以是多条记录。
当告诉SHIRO从哪里获取授权后,还得告诉SHIRO对谁进行授权。[urls]部分就是起这个作用。/admin/**=authc,perms[jimi] 这句,/admin/**是指针对admin目录配置权限,authc,是系统内置的过滤器,告诉shiro,进入此目录,必须是已验证的登录用户。perms[jimi] 是权限限定符,perms同样是内置的过滤器,指org.apache.shiro.web.filter.
authz.PermissionsAuthorizationFilter,jimi是通过jdbcRealm.permissionsQuery查询出来的权限字符串,只有用户获得的角色含有该字符串,才能获得访问授权。如果针对角色授权,可以是/admin/**=authc,roles[admin] .
SHIRO内置了很多过滤器,如下:
[main] ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds.serverName = 10.0.31.77 ds.user = root ds.password =zavens ds.databaseName = users ds.url = jdbc:mysql://10.0.31.77:3306/zavens jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm.permissionsLookupEnabled = true jdbcRealm.authenticationQuery = SELECT password FROM users WHERE username = ? jdbcRealm.userRolesQuery = SELECT rolename FROM user_roles WHERE username = ? jdbcRealm.permissionsQuery = SELECT permission FROM role_permissions WHERE rolename = ? jdbcRealm.dataSource = $ds authc.loginUrl = /login.xhtml perms.unauthorizedUrl = /login.xhtml roles.unauthorizedUrl = /login.xhtml [urls] /admin/**=authc,perms[jimi] /system/**=authc,perms[juemi]
这里需要说明的是,jdbcRealm.authenticationQuery,jdbcRealm.userRolesQuery,jdbcRealm.permissionsQuery配置行,相对应的时三个表users,user_roles,role_permissions,这三行是告诉SHIRO从何处获取授权的配置,他们是jdbc的预查询语句。authenticationQuery用于从users中查找密码来进行验证,查询后取得第一条记录的第一个字段进行验证。userRolesQuery用于从user_roles查找所属的角色,它可以是多行,但是要保证查询后的角色是第一个字段。permissionsQuery用于从role_permissions中查找权限字符串,同样要求是第一个字段,可以是多条记录。
当告诉SHIRO从哪里获取授权后,还得告诉SHIRO对谁进行授权。[urls]部分就是起这个作用。/admin/**=authc,perms[jimi] 这句,/admin/**是指针对admin目录配置权限,authc,是系统内置的过滤器,告诉shiro,进入此目录,必须是已验证的登录用户。perms[jimi] 是权限限定符,perms同样是内置的过滤器,指org.apache.shiro.web.filter.
authz.PermissionsAuthorizationFilter,jimi是通过jdbcRealm.permissionsQuery查询出来的权限字符串,只有用户获得的角色含有该字符串,才能获得访问授权。如果针对角色授权,可以是/admin/**=authc,roles[admin] .
SHIRO内置了很多过滤器,如下:
anon org.apache.shiro.web.filter.authc.AnonymousFilter authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter authcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter logout org.apache.shiro.web.filter.authc.LogoutFilter noSessionCreation org.apache.shiro.web.filter.session.NoSessionCreationFilter 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
相关文章推荐
- 使用Maven自动部署Java Web应用到Tomcat服务器
- 使用 Visual Studio 将 ASP.NET Web 应用部署到 Azure
- 如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?
- maven karaf 4.0x中使用jetty部署web 应用;karaf 4.0 x离线使用
- 使用spring-loaded开源项目,实现java程序和web应用的热部署
- 使用uWSGI Web服务器和Nginx部署Python WSGI应用
- 局域网内,在Linux 安装MySQL,部署Java Web应用(一)
- 如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?
- 使用spring-loaded开源项目,实现java程序和web应用的热部署
- linux下部署JavaWeb应用以及mysql目录结构
- WebLogic使用总结(七)——WebLogic部署Web应用并绑定域名
- 使用spring-loaded开源项目,实现java程序和web应用的热部署
- 一部Web应用自动化部署的进化史[AWS]-使用shell实现CodeDeploy
- tomcat部署web应用,并使用域名(IP)直接访问
- 华为云centos7上部署node.js应用,部署redis和mysql,使用forever守护node.js进程
- 使用maven插件自动部署web应用至Docker容器的tomcat
- Docker实践-使用maven插件自动部署web应用至Docker容器的tomcat
- window server 2008 R2部署web应用 tomcat+mysql
- 使用spring-loaded开源项目,实现java程序和web应用的热部署
- WebLogic使用总结(七)——WebLogic部署Web应用并绑定域名