login demo
This commit is contained in:
parent
fe9d6a44c6
commit
53979cc3b7
|
@ -1,6 +1,8 @@
|
||||||
package io.metersphere.security;
|
package io.metersphere.security;
|
||||||
|
|
||||||
|
|
||||||
|
import io.metersphere.dto.UserDTO;
|
||||||
|
import io.metersphere.service.UserService;
|
||||||
import io.metersphere.user.SessionUser;
|
import io.metersphere.user.SessionUser;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import org.apache.shiro.authc.*;
|
import org.apache.shiro.authc.*;
|
||||||
|
@ -10,6 +12,8 @@ import org.apache.shiro.subject.PrincipalCollection;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义Realm 注入service 可能会导致在 service的aop 失效,例如@Transactional,
|
* 自定义Realm 注入service 可能会导致在 service的aop 失效,例如@Transactional,
|
||||||
|
@ -23,6 +27,8 @@ import org.slf4j.LoggerFactory;
|
||||||
public class ShiroDBRealm extends AuthorizingRealm {
|
public class ShiroDBRealm extends AuthorizingRealm {
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(ShiroDBRealm.class);
|
private Logger logger = LoggerFactory.getLogger(ShiroDBRealm.class);
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限认证
|
* 权限认证
|
||||||
|
@ -40,10 +46,16 @@ public class ShiroDBRealm extends AuthorizingRealm {
|
||||||
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
|
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
|
||||||
String userId = token.getUsername();
|
String userId = token.getUsername();
|
||||||
String password = String.valueOf(token.getPassword());
|
String password = String.valueOf(token.getPassword());
|
||||||
SessionUser sessionUser = new SessionUser();
|
UserDTO user = userService.getUserDTO(userId);
|
||||||
|
String msg;
|
||||||
|
if (user == null) {
|
||||||
|
msg = "not exist user is trying to login, user:" + userId;
|
||||||
|
logger.warn(msg);
|
||||||
|
throw new UnknownAccountException(msg);
|
||||||
|
}
|
||||||
|
// TODO 密码验证,roles 等内容填充
|
||||||
|
|
||||||
sessionUser.setName(userId);
|
SessionUser sessionUser = SessionUser.fromUser(user);
|
||||||
sessionUser.setId(userId);
|
|
||||||
SecurityUtils.getSubject().getSession().setAttribute("user", sessionUser);
|
SecurityUtils.getSubject().getSession().setAttribute("user", sessionUser);
|
||||||
return new SimpleAuthenticationInfo(userId, password, getName());
|
return new SimpleAuthenticationInfo(userId, password, getName());
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,10 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import Cookies from 'js-cookie';
|
||||||
|
|
||||||
|
const TokenKey = 'Admin-Token';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Login",
|
name: "Login",
|
||||||
data() {
|
data() {
|
||||||
|
@ -102,7 +106,9 @@
|
||||||
submit(form) {
|
submit(form) {
|
||||||
this.$refs[form].validate((valid) => {
|
this.$refs[form].validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.$post("signin", this.form, function () {
|
this.$post("signin", this.form, (response) => {
|
||||||
|
// 登录信息保存 cookie
|
||||||
|
Cookies.set(TokenKey, response.data);
|
||||||
window.location.href = "/"
|
window.location.href = "/"
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue