支持配置是否开启记住我功能

master
RuoYi 2021-08-10 11:39:17 +08:00
parent 89719f0570
commit 0606663fe8
5 changed files with 36 additions and 9 deletions

View File

@ -1,5 +1,6 @@
package com.ruoyi.web.controller.common; package com.ruoyi.web.controller.common;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -103,9 +104,10 @@ public class CommonController
{ {
// 上传文件路径 // 上传文件路径
String filePath = RuoYiConfig.getUploadPath(); String filePath = RuoYiConfig.getUploadPath();
List<String> fileNames = new ArrayList<>(); List<String> fileNames = new ArrayList<String>();
List<String> urls = new ArrayList<>(); List<String> urls = new ArrayList<String>();
for (MultipartFile file : files) { for (MultipartFile file : files)
{
// 上传并返回新文件名称 // 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file); String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName; String url = serverConfig.getUrl() + fileName;

View File

@ -6,7 +6,10 @@ import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
@ -14,6 +17,7 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.service.ConfigService;
/** /**
* *
@ -23,15 +27,27 @@ import com.ruoyi.common.utils.StringUtils;
@Controller @Controller
public class SysLoginController extends BaseController public class SysLoginController extends BaseController
{ {
/**
*
*/
@Value("${shiro.rememberMe.enabled: false}")
private boolean rememberMe;
@Autowired
private ConfigService configService;
@GetMapping("/login") @GetMapping("/login")
public String login(HttpServletRequest request, HttpServletResponse response) public String login(HttpServletRequest request, HttpServletResponse response, ModelMap mmap)
{ {
// 如果是Ajax请求返回Json字符串。 // 如果是Ajax请求返回Json字符串。
if (ServletUtils.isAjaxRequest(request)) if (ServletUtils.isAjaxRequest(request))
{ {
return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"); return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}");
} }
// 是否开启记住我
mmap.put("isRemembered", rememberMe);
// 是否开启用户注册
mmap.put("isAllowRegister", configService.getKey("sys.account.registerUser"));
return "login"; return "login";
} }

View File

@ -120,6 +120,9 @@ shiro:
maxSession: -1 maxSession: -1
# 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户 # 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户
kickoutAfter: false kickoutAfter: false
rememberMe:
# 是否开启记住我
enabled: true
# 防止XSS攻击 # 防止XSS攻击
xss: xss:

View File

@ -37,7 +37,7 @@
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li> <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li> <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
</ul> </ul>
<strong th:if="${@config.getKey('sys.account.registerUser')}">还没有账号? <a th:href="@{/register}">立即注册&raquo;</a></strong> <strong th:if="${isAllowRegister}">还没有账号? <a th:href="@{/register}">立即注册&raquo;</a></strong>
</div> </div>
</div> </div>
<div class="col-sm-5"> <div class="col-sm-5">
@ -56,7 +56,7 @@
</a> </a>
</div> </div>
</div> </div>
<div class="checkbox-custom" th:classappend="${captchaEnabled==false} ? 'm-t'"> <div class="checkbox-custom" th:if="${isRemembered}" th:classappend="${captchaEnabled==false} ? 'm-t'">
<input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">记住我</label> <input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">记住我</label>
</div> </div>
<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button> <button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button>

View File

@ -123,6 +123,12 @@ public class ShiroConfig
@Value("${shiro.user.unauthorizedUrl}") @Value("${shiro.user.unauthorizedUrl}")
private String unauthorizedUrl; private String unauthorizedUrl;
/**
*
*/
@Value("${shiro.rememberMe.enabled: false}")
private boolean rememberMe;
/** /**
* 使Ehcache * 使Ehcache
*/ */
@ -236,7 +242,7 @@ public class ShiroConfig
// 设置realm. // 设置realm.
securityManager.setRealm(userRealm); securityManager.setRealm(userRealm);
// 记住我 // 记住我
securityManager.setRememberMeManager(rememberMeManager()); securityManager.setRememberMeManager(rememberMe ? rememberMeManager() : null);
// 注入缓存管理器; // 注入缓存管理器;
securityManager.setCacheManager(getEhCacheManager()); securityManager.setCacheManager(getEhCacheManager());
// session管理器 // session管理器