Java框架之shiro(03)支持特性

RememberMe

一、RememberMe是什么

  • 这个就是你访问一些网站的时候,下次再打开浏览器还是能记住你是谁,无需登录就可以访问一些页面
  • 基本就是通过将相关的 cookie 写到浏览器端保存下来实现的
  • 使用了这个功能能够不受限制访问部分的界面,但是涉及到金融相关的页面,比如订单页面还是需要再次认证的
  • RememberMe使用过程中,需要配合相应的拦截器来实现相应的功能,用错了拦截器可能就不能满足你的需求了

二、RM配置

1、spring-shiro-web.xml配置

配置会话 cookie 模版
  • 这里 sid 的值为 -1意思关闭浏览器的话就会被自动删除,没有办法保持会话
<!-- 会话Cookie模板 -->  
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">  
    <constructor-arg value="sid"/>  
    <property name="httpOnly" value="true"/>  
    <property name="maxAge" value="-1"/>  
</bean>  
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">  
    <constructor-arg value="rememberMe"/>  
    <property name="httpOnly" value="true"/>  
    <property name="maxAge" value="2592000"/><!-- 30天 -->  
</bean> 
配置remenbeMe管理器
  • cipherKey 是加密cookie的密钥
<!-- rememberMe管理器 -->  
<bean id="rememberMeManager"   
class="org.apache.shiro.web.mgt.CookieRememberMeManager">  
    <property name="cipherKey" value="  
#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}"/>  
     <property name="cookie" ref="rememberMeCookie"/>  
</bean>
配置安全管理器
<!-- 安全管理器 -->  
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">  
    <property name="rememberMeManager" ref="rememberMeManager"/>  
    .........
</bean>  
配置表单拦截器
<bean id="formAuthenticationFilter"   
class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter">  
    <property name="rememberMeParam" value="rememberMe"/>  
    ........
</bean> 
配置shiroFilter
  • 在没有登录过或者记住过的话,访问任何界面都会被跳转至登录页面
  • 登录勾选记住我后,关闭浏览器再进行访问由 user 控制的界面无需再次登录
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
	........
    <property name="filterChainDefinitions">  
        <value>  
            /login.jsp = authc  
            /logout = logout  
            /authenticated.jsp = authc  
            /** = user  
        </value>  
    </property>  
</bean>

SSL

一、生成数字证书

  • 使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore:
    keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA
  • 生成过程中的姓名组织等等一路填写下去即可

二、配置 tomcat server xml

  • 我使用的是 tomcat9,原来的相关的配置项本来就是注释掉的,所以直接加入如下的配置即可
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" 
       keystoreFile="D:\localhost.keystore" keystorePass="123456"/>&nbsp;

三、添加SSL到配置文件

  • shiro 的spring 配置文件里面加上 ssl 的拦截器并在 shiroFilter 里面配置使用
<bean id="sslFilter" class="org.apache.shiro.web.filter.authz.SslFilter">
	<property name="port" value="8443"/>
</bean>

<!-- Shiro的Web过滤器 -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
	<property name="securityManager" ref="securityManager"/>
	<property name="loginUrl" value="/login.jsp"/>
	<property name="unauthorizedUrl" value="/unauthorized.jsp"/>
	<property name="filters">
		<util:map>
			<entry key="authc" value-ref="formAuthenticationFilter"/>
			<entry key="ssl" value-ref="sslFilter"/>
		</util:map>
	</property>
	<property name="filterChainDefinitions">
		<value>
			/login.jsp = ssl,authc
			/logout = logout
			/authenticated.jsp = authc
			/** = user
		</value>
	</property>
</bean>

四、测试

  • https://localhost:8443/proname/login.jsp 即可访问登录的页面,proname 是自己的项目的名称

单点登录

  • 直接参考博客:https://www.iteye.com/blog/jinnianshilongnian-2036730

综合示例


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值