/* * Copyright [2020-2030] [https://www.stylefeng.cn] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: * * 1.请不要删除和修改根目录下的LICENSE文件。 * 2.请不要删除和修改Guns源码头部的版权声明。 * 3.请保留源码和相关描述文件的项目出处,作者声明等。 * 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns * 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns * 6.若您的项目无法满足以上几点,可申请商业授权 */ package cn.stylefeng.roses.kernel.auth.api; import cn.stylefeng.roses.kernel.auth.api.exception.AuthException; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse; import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginWithTokenRequest; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; /** * 认证服务的接口,包括基本的登录退出操作和校验token等操作 * * @author fengshuonan * @date 2020/10/26 14:41 */ public interface AuthServiceApi { /** * 常规登录操作 * * @param loginRequest 登录的请求 * @return token 一般为jwt token * @author fengshuonan * @date 2020/10/26 14:41 */ LoginResponse login(LoginRequest loginRequest); /** * 登录(直接用账号登录),一般用在第三方登录 * * @param username 账号 * @author fengshuonan * @date 2020/10/26 14:40 */ LoginResponse loginWithUserName(String username); /** * 登录(通过账号和sso后的token),一般用在单点登录 * * @param username 账号 * @param caToken sso登录成功后的会话 * @author fengshuonan * @date 2021/5/25 22:44 */ LoginResponse loginWithUserNameAndCaToken(String username, String caToken); /** * 通过token进行登录,一般用在单点登录服务 * * @param loginWithTokenRequest 请求 * @author fengshuonan * @date 2021/5/25 22:44 */ LoginResponse LoginWithToken(LoginWithTokenRequest loginWithTokenRequest); /** * 当前登录人退出登录 * * @author fengshuonan * @date 2020/10/19 14:16 */ void logout(); /** * 移除某个token,也就是退出某个用户 * * @param token 某个用户的登录token * @author fengshuonan * @date 2020/10/19 14:16 */ void logoutWithToken(String token); /** * 校验jwt token的正确性,调用jwt工具类相关方法校验 *

* 结果有三种,第一是jwt过期了,第二是用户随便写的错误token,第三种是token正确,token正确不会抛出异常 * * @param token 某个用户的登录token * @return token解析出的用户基本信息 * @throws AuthException 认证异常,如果token错误或过期,会有相关的异常抛出 * @author fengshuonan * @date 2020/10/19 14:16 */ DefaultJwtPayload validateToken(String token) throws AuthException; /** * 校验用户是否认证通过,认证是校验token的过程,校验失败会抛出异常 * * @param token 用户登陆的token * @param requestUrl 被校验的url * @author fengshuonan * @date 2020/10/22 16:03 */ void checkAuth(String token, String requestUrl); /** * 取消冻结帐号 * * @author xixiaowei * @date 2022/1/22 16:37 */ void cancelFreeze(LoginRequest loginRequest); /** * 为指定token创建新的登录信息 * * @param token 用户旧的token * @param defaultJwtPayload jwt的payload信息 * @return 新的当前登录用户 * @author fengshuonan * @date 2022/10/17 0:04 */ LoginUser createNewLoginInfo(String token, DefaultJwtPayload defaultJwtPayload); }