java - Django 与 Acegi 集成

标签 java django spring-security

我现有的 Java 应用程序正在使用 Acegi 进行身份验证/授权。我们的新 Web 界面最好用 Django 编写。我希望 Django 维护用户 - 注册等。Django 将共享或更新 Acegi 身份验证数据,以便旧的应用程序仍然有效,并且用户不必使用两组凭据(甚至可能共享身份验证 cookie)。我想知道是否有人已经在处理类似的问题,如果是,选择了哪种方法。

谢谢

最佳答案

请记住,无论您使用 Django 做什么,它仍然是 Python,因此仅仅因为 Django 没有/不这样做,并不意味着您不能。另外,从另一个角度来看,没有什么可以阻止您从传统 Django 应用程序外部使用 Django 框架的某些部分。

我不太喜欢 Django 的管理界面,尽管我确实在其中使用了很多 FormModelForm 。我实际上实现了自己的身份验证系统 - 您所需要的只是让您登录/注销等的功能以及该数据的接口(interface)。它(用户/组等)不必表示为 Django 模型,尽管我这样做是为了方便。没有什么可以阻止您连接另一个 ORM 或为 acegi 编写自己的 ORM。或者,如果编写自己的层足够简单,就这样做。

我建议 Hook Django 的上下文处理器和 Django 中间件并库化您的工作,因为它会使重用变得轻而易举,并且它将以与现有身份验证框架类似的方式运行。这是一个示例上下文处理器,我使用它允许我在模板中编写 {{ username }} ,而不必从每个 View 方法中的每个请求对象中获取它:

def Authentication(request):
    if AuthenticationCheck(sess=request.session, timeofaction=datetime.datetime.now(), ipaddress=request.META['REMOTE_ADDR']) == True:
        return dict(username=request.session["username"])
    else:
        return dict(username='')

此外,Django Middleware Documentation

关于java - Django 与 Acegi 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640256/

相关文章:

java - 继承与列表

java - JAX-RS 中等效的 Servlet init() 方法

java - JVM 是否删除了不必要的类实例化?

java - 写一个java程序每天重启glassfish

python - 如何在django中24小时后自动删除数据库上的数据?

python - 我可以在带有 Python3.x 的 Django(dev 1.6.x) 上使用 MySQL 吗?

django - Django admin分页问题

grails - Grails Spring Security插件URL

spring - 如何在 Spring MVC-Spring Security 应用程序中处理 GWT RPC 调用的 session 过期异常

java - 无法定义以 keycloak 开头的属性