
club.zhcs.lina.auth.service.AuthService Maven / Gradle / Ivy
The newest version!
package club.zhcs.lina.auth.service;
import java.util.List;
import java.util.regex.Pattern;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
/**
*
* @author Kerbores([email protected])
*
*/
public interface AuthService {
/**
* 用户登录
*
* @param user
*/
public void login(AuthUser user);
/**
* 获取当前登录用户
*
* @return
*/
public AuthUser user();
/**
* 获取当前登录用户的角色
*
* @return
*/
public default List roles() {
if (Lang.isEmpty(user())) {
return Lang.list();
}
return user().getRoles();
}
/**
* 获取当前登录用户的权限
*
* @return
*/
public default List permissions() {
if (Lang.isEmpty(user())) {
return Lang.list();
}
return user().getPermissions();
}
/**
* 获取用户名
*
* @return
*/
public default String userName() {
if (Lang.isEmpty(user())) {
return "";
}
return user().getUserName();
}
/**
* 认证检查
*
* @param withoutAuthenticationUrlRegulars
* 不需要检查的url正则表达式
* @return 认证检查通过状态
*/
public default boolean authentication(List withoutAuthenticationUrlRegulars) {
return skip() || pass(getRequest().getRequestURI(), withoutAuthenticationUrlRegulars) || user() != null;
}
/**
* @param uri
* 请求地址
* @param withoutAuthenticationUrlRegulars
* 放行url正则
* @return 是否放行
*/
public default boolean pass(String uri, List withoutAuthenticationUrlRegulars) {
for (String regular : withoutAuthenticationUrlRegulars) {
if (Pattern.matches(regular, uri)) {
return true;
}
}
return false;
}
/**
* 是否跳过检查
*
* @return
*/
public default boolean skip() {
return false;
}
public HttpServletRequest getRequest();
/**
* 认证头key
*
* @return
*/
public default String authorizationHeaderKey() {
return "Authorization";
}
/**
* token key ,可以接受从header/cookie和请求参数传入
*
* @return
*/
public default String tokenKey() {
return "token";
}
/**
* refresh token key ,可以接受从header/cookie和请求参数传入
*
* @return
*/
public default String refreshTokenKey() {
return "refreshToken";
}
/**
* 获取token
*
* @return
*/
public default String token() {
String token = null;
Cookie[] cookies = getRequest().getCookies();
if (cookies != null) {
for (Cookie ele : cookies) {
if (Strings.equalsIgnoreCase(ele.getName(), tokenKey())) {
token = ele.getValue();
if (Strings.isNotBlank(token)) {
break;
}
}
}
}
if (Strings.isBlank(token)) {
token = getRequest().getHeader(authorizationHeaderKey());
}
if (Strings.isBlank(token)) {
token = getRequest().getHeader(tokenKey());
}
if (Strings.isBlank(token)) {
token = getRequest().getParameter(tokenKey());
}
return token;
}
/**
* 获取 refresh token
*
* @return
*/
public default String refreshToken() {
String refreshToken = null;
Cookie[] cookies = getRequest().getCookies();
if (cookies != null) {
for (Cookie ele : cookies) {
if (Strings.equalsIgnoreCase(ele.getName(), refreshTokenKey())) {
refreshToken = ele.getValue();
if (Strings.isNotBlank(refreshToken)) {
break;
}
}
}
}
if (Strings.isBlank(refreshToken)) {
refreshToken = getRequest().getHeader(refreshTokenKey());
}
if (Strings.isBlank(refreshToken)) {
refreshToken = getRequest().getParameter(refreshTokenKey());
}
return refreshToken;
}
/**
*
*/
public void logout();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy