我使用springboot+springSecurity+keycloak创建了一个项目架构,目前访问接口时,没有登录会自动调转到单点登录页面,调转时自动会把当前请求得地址做回单点页面的回调地址,这样导致了一个问题就是 我是前后端分离项目,登录继续回调api,前端拿不到返回值。不知道有没有方法能让他登陆时调转到前端首页,后续登录后就不需要调转
,正常执行接口逻辑呢?或者有没有更好的处理方案?
我使用springboot+springSecurity+keycloak创建了一个项目架构,目前访问接口时,没有登录会自动调转到单点登录页面,调转时自动会把当前请求得地址做回单点页面的回调地址,这样导致了一个问题就是 我是前后端分离项目,登录继续回调api,前端拿不到返回值。不知道有没有方法能让他登陆时调转到前端首页,后续登录后就不需要调转
你可以尝试以下方法解决这个问题:
在Keycloak配置中,将回调URL设置为前端的首页URL。这样登录成功后,用户将被重定向到前端首页而不是后端API。
当用户进行登录时,前端可以将当前页面的URL作为参数传递给后端API。后端API将在重定向到Keycloak登录页面时将该URL作为回调URL传递给Keycloak。登录成功后,Keycloak将用户重定向回该URL。
在Keycloak中,你可以尝试使用Direct Access Grants Flow(直接访问授权流)代替默认的Authorization Code Flow(授权码流)。这样可以避免重定向并直接返回访问令牌,使得前端可以直接获得登录状态。
如果以上方法都无法解决你的问题,你可以考虑使用前后端分离的认证方案,如使用JWT(JSON Web Token)实现认证和授权。在这种方案下,前端将在每个请求中携带JWT令牌,后端通过验证JWT令牌来判断用户是否已登录。