jsp实现登录验证 shiro之记住登录信息(2)

电脑杂谈  发布时间:2018-02-12 08:25:21  来源:网络整理

设置securityManager安全管理器的rememberMeManager;

Java代码

<bean id="formAuthenticationFilter"  
class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"> 
  …… 
  <property name="rememberMeParam" value="rememberMe"/> 
</bean>  

rememberMeParam,即rememberMe请求参数名,请求参数是boolean类型,true表示rememberMe。

Java代码

<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> 

“/authenticated.jsp = authc”表示访问该地址用户必须身份验证通过(Subject. isAuthenticated()==true);而“/** = user”表示访问该地址的用户是身份验证通过或RememberMe登录的都可以。

测试:

1、访问:8080/chapter13/,会跳转到登录页面,登录成功后会设置会话及rememberMe Cookie;

2、关闭浏览器,此时会话cookie将失效;

3、然后重新打开浏览器访问:8080/chapter13/,还是可以访问的;

jsp注册页面表单验证_jsp实现登录验证_jsp实现登录验证论文

4、如果此时访问:8080/chapter13/authenticated.jsp,会跳转到登录页面重新进行身份验证。jsp实现登录验证

如果要自己做RememeberMe,需要在登录之前这样创建Token:UsernamePasswordToken(用户名,密码,是否记住我),如:

Java代码

Subject subject = SecurityUtils.getSubject(); 
UsernamePasswordToken token = new UsernamePasswordToken(username, password); 
token.setRememberMe(true); 
subject.login(token);  

subject.isAuthenticated()表示用户进行了身份验证登录的,即使有Subject.login进行了登录;subject.isRemembered():表示用户是通过记住我登录的,此时可能并不是真正的你(如你的朋友使用你的电脑,或者你的cookie被窃取)在访问的;且两者二选一,即subject.isAuthenticated()==true,则subject.isRemembered()==false;反之一样。

另外对于过滤器,一般这样使用:

访问一般网页,如个人在主页之类的,我们使用user即可,user只要用户登录(isRemembered()==true or isAuthenticated()==true)过即可访问成功;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-73196-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...