一般来讲,记住密码的基本处理,就是把用户的一些基本信息(密码)存入浏览器的Cookie,下次登录的时候优先验证Cookie,后端做处理;以此来实现记住密码的功能使用shiro自带的RememberMe功能,使用起来比较简单,只需简单的配置需注意一点的是,网站如果对安全性要求比较的,一般都不建议有记住密码的功能 因为Cookie是保存在本机电脑浏览器里,不排除其他用户能使用此电脑,拷走Cookie,导入其他电脑继续使用您的账号登录,我来为大家讲解一下关于go语言shiro?跟着小编一起来看一看吧!

go语言shiro(Shiro配置记住密码功能)

go语言shiro

我当时刚学shiro,知道RememberMe是记住密码下次就可以直接登录,但是一直不知道怎么用,理论上来说,第一次登录以后,跳转到success页面,那么如果shiro使用了RememberMe那么下次我直接进入success就可以直接进入到用户中心,因为我以前也配置了RememberMe但是不起作用,于是参考下面的文章,原来关键在于shiroFilter这里,/**一定要配置成user表示访问该地址的用户是身份验证通过或RememberMe登录的都可以。我当时设置的是/**=authc所以导致即使使用了shiro、的RememberMe 登录以后再跳转到成功页面也进不去!下面教程开始:

一般来讲,记住密码的基本处理,就是把用户的一些基本信息(密码)存入浏览器的Cookie,下次登录的时候优先验证Cookie,后端做处理;以此来实现记住密码的功能!使用shiro自带的RememberMe功能,使用起来比较简单,只需简单的配置。需注意一点的是,网站如果对安全性要求比较的,一般都不建议有记住密码的功能! 因为Cookie是保存在本机电脑浏览器里,不排除其他用户能使用此电脑,拷走Cookie,导入其他电脑继续使用您的账号登录!

具体操作程序:

spring-shiro-web.xml配置

RememberMe 配置与rememberMe管理器

<!-- remenberMe配置 -->

<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">

<constructor-arg value="rememberMe" />

<property name="httpOnly" value="true" />

<!-- 默认记住7天(单位:秒) -->

<property name="maxAge" value="604800" />

</bean>

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

rememberMeCookie:即记住我的Cookie,保存时长7天;rememberMe管理器,cipherKey是加密rememberMe Cookie的密钥;默认AES算法;

关键在于/** = user

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">

<property name="rememberMeManager" ref="rememberMeManager" />

</bean>

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

设置securityManager安全管理器的rememberMeManager;

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

注:return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());其中把用户信息放入SimpleAuthenticationInfo对象,不能把整个user对象放入,不然会出现错误数组下标越界,在项目中user对象信息过于庞大,不能全部存入Cookie,Cookie对长度有一定的限制

,