瀏覽代碼

shiro动态密码,登录验证码

yhliang 2 年之前
父節點
當前提交
358aa580f3

+ 10 - 0
leiSP-admin/src/main/resources/templates/login.html

@@ -53,6 +53,16 @@
                 <h4 class="no-margins">登录:</h4>
                 <input type="text"     name="username" class="form-control uname"     placeholder="用户名" />
                 <input type="password" name="password" class="form-control pword"     placeholder="密码" />
+                <div class="row m-t" th:if="${captchaEnabled==true}">
+                    <div class="col-xs-6">
+                        <input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
+                    </div>
+                    <div class="col-xs-6">
+                        <a href="javascript:void(0);" title="点击更换验证码">
+                            <img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
+                        </a>
+                    </div>
+                </div>
                 <button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button>
             </form>
         </div>

+ 17 - 1
leiSP-framework/src/main/java/com/sooka/framework/config/ShiroConfig.java

@@ -5,6 +5,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
 import javax.servlet.Filter;
 import org.apache.commons.io.IOUtils;
 import org.apache.shiro.cache.ehcache.EhCacheManager;
@@ -368,7 +370,7 @@ public class ShiroConfig
     {
         CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
         cookieRememberMeManager.setCookie(rememberMeCookie());
-        cookieRememberMeManager.setCipherKey(Base64.decode(cipherKey));
+        cookieRememberMeManager.setCipherKey(getCipherKey());
         return cookieRememberMeManager;
     }
 
@@ -409,4 +411,18 @@ public class ShiroConfig
         authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
         return authorizationAttributeSourceAdvisor;
     }
+
+
+    private byte[] getCipherKey() {
+        try {
+            KeyGenerator keygen = KeyGenerator.getInstance("AES");
+            SecretKey deskey = keygen.generateKey();
+//            System.out.println(Base64.encodeToString(deskey.getEncoded()));
+            return Base64.decode(deskey.getEncoded());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return Base64.decode(cipherKey);
+        }
+    }
+
 }