jfinal整合shiro步骤总结

一、使用maven加入shiro的jar包,如图,找到https://my.oschina.net/u/2427561/blog/edit#相关xml节点放入pom.xml,运行项目即可(这里选的是最新版本的shiro) 输入图片说明 导入jar包如下:

输入图片说明

二在 web.xml配置shiro

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <listener>
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
  </listener>
  <filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>ShiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter>
    <filter-name>jfinal</filter-name>
    <filter-class>com.jfinal.core.JFinalFilter</filter-class>
    <init-param>
      <param-name>configClass</param-name>
      <param-value>com.learnging.system.LearngingConfig</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>jfinal</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

三创建shiro.ini文件

[main]
#realm
shiroRealm=com.learnging.system.shiro.ShiroRealm
securityManager.realm=$shiroRealm
authc.loginUrl = /a/login
authc.successUrl = /a/index
logout.redirectUrl = /a/login
[urls]
/index = authc 
/a/logout = logout

(1)securityManager.realm:设置shiro中领域,可以为多个

(2)authc.loginUrl:设置认证拦截url。此处认证为登录,此处url为登录时提交的表单method属性中对应的url。shiro内部自带的拦截器会去默认拦截。

(3)authc.successUrl:设置认证成功后的url跳转路劲。

(4)logout.redirectUrl:设置退出登录时跳转的url路劲。

(5)[urls]:此处配置为指定url 的权限如 /index = authc:意思为如果访问index必须要进行验证通过其中有很多参数,authc只是其中一个认证权限

四创建Realm

(1)创建ShiroRealm,并继承AuthorizingRealm其中并实现相关方法。

/**
* 获取登录用户拥有的角色和权限 add by xjj
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals)
{
    String username = (String)principals.getPrimaryPrincipal();//当前登录用户名
    SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
    authorizationInfo.addRole("admin"); //将当前用户名下的角色存入authorizationInfo,暂时写死
    authorizationInfo.addStringPermission("user:create"); //将当前用户名下的权限存入authorizationInfo,暂时写死
    return authorizationInfo;
}

/**
* 验证用户是否合法 add by xjj
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException
{
    UserService userService = new UserService();
    String name = String.valueOf(token.getPrincipal()); //当前登录用户名
    User user = userService.findByUserName(name); //根据用户名查找用户信息
    return new SimpleAuthenticationInfo(user, user.getPassword(), getName()); //存入查询用户信息

(2)doGetAuthenticationInfo方法验证登录用户是否合法,并将该用户信息存入SimpleAuthenticationInfo。

(3)在系统认证成功后将会调用doGetAuthorizationInfo方法进行权限获取,此方法中 principals.getPrimaryPrincipal();获取刚才存入的User对象; info.addStringPermission("权限名称");用户添加权限此处可以通过用户查询权限表进行查询。

五加入在网上找的dafei的jfinal整合shiro的Java文件

输入图片说明

下载地址:http://git.oschina.net/myaniu/jfinalshiroplugin

六配置shiro拦截器

interceptors.add(new ShiroInterceptor());

七配置插件

me.add(new ShiroPlugin(routes))

八运行试一下

1报如下错

输入图片说明

解决办法如下,即再pom.xml中加commons-logging的引用

输入图片说明

九具体使用,在用户管理列表方法前加注解,然后就没权限进入该方法了,至此,最简单的验证成形。

输入图片说明

总结: 1.web.xml 才是整个 Web 应用的核心所在,Web 容器(例如:Tomcat)会提供一些监听器,用于监听 Web 应用的生命周期事件。

2.EnvironmentLoaderListener是整个 Shiro Web 应用的入口

输入图片说明

EnvironmentLoaderListener在容器启动时创建 WebEnvironment 对象,并由该对象来读取 Shiro 配置文件,创建WebSecurityManager 与 FilterChainResolver 对象,它们都在后面将要出现的 ShiroFilter 中起到了重要作用。 从 web.xml 中同样可以得知,ShiroFilter 是整个 Shiro 框架的门面,因为它拦截了所有的请求,后面是需要 Authentication(认证)还是需要 Authorization(授权)都由它说了算。 我参考的EnvironmentLoaderListener相关博客: http://www.codeweblog.com/shiro-%E4%B9%8B-%E5%85%A5%E5%8F%A3-environmentloaderlistener/

转载于:https://my.oschina.net/u/2427561/blog/1511542

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值