据我所知,在PHP中,我们需要通过SSL连接LDAP以更改用户密码.
有没有其他方式,EG,其他语言(JAVA/ASP)更改LDAP密码而不需要SSL?
谢谢.
更新:当我尝试修改自己的帐户密码时,我收到"警告:ldap_mod_replace()[function.ldap-mod-replace]:修改:访问不足".如果我尝试更改其他用户密码,我没有收到任何错误消息,但密码仍然坚持旧密码.
在用户使用Spring Security初次登录时,实现强制密码更改的最优雅方法是什么?
我尝试实现这里AuthenticationSuccessHandler
提到的自定义,但正如rodrigoap所提到的,如果用户在地址栏手动输入URL,即使用户没有更改密码,用户仍然可以继续访问该页面.
我用过滤器ForceChangePasswordFilter做了这个.因为如果用户手动键入url,他们可以绕过更改密码表单.使用过滤器,请求始终被截获.
因此,我继续实施自定义过滤器.
我的问题是,当我实现一个自定义过滤器和发送里面重定向,它会通过过滤器再次提到引起无限重定向循环这里.我尝试通过在security-context.xml中声明两个http标签来实现所提到的解决方案,第一个标签具有pattern
属性,但它仍然通过我的自定义过滤器:
<http pattern="/resources" security="none"/>
<http use-expressions="true" once-per-request="false"
auto-config="true">
<intercept-url pattern="/soapServices/**" access="permitAll" requires-channel="https"/>
...
<custom-filter position="LAST" ref="passwordChangeFilter" />
</http>
...
<beans:bean id="passwordChangeFilter"
class="my.package.ForcePasswordChangeFilter"/>
<beans:bean id="customAuthenticationSuccessHandler"
class="my.package.CustomAuthenticationSuccessHandler" >
</beans:bean>
<beans:bean id="customAuthenticationFailureHandler"
class="my.package.CustomAuthenticationFailureHandler" >
<beans:property name="defaultFailureUrl" value="/login"/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
我当前的实现(有效)是:
isFirstLogin
isFirstLogin
是否已设置
chain.doFilter()
我对此实现的问题是访问我的资源文件夹也会通过此过滤器导致我的页面失真(因为*.js和*.css未成功检索).这就是我<http>
在我的安全应用程序context.xml中尝试使用两个标签的原因(这不起作用).
因此,如果servletPath启动或包含"/ resources",我最终必须手动过滤请求.我不希望它像这样 - 必须手动过滤请求路径 - 但现在它就是我拥有的.
这样做的优雅方式是什么?
我正在使用ember-simple-auth和我的Ember.js应用程序的Devise适配器.我需要为用户创建一种方法来执行以下操作:
有没有办法用ember-simple-auth或推荐的方法来做到这一点?我最初的想法是将它构建到我的Ember应用程序中,但这是我应该在Ember应用程序之外构建的吗?
change-password forgot-password password-recovery ember.js ember-simple-auth
我想在更改当前密码时从所有浏览器中注销用户.在将新的passowrd保存到数据库之后,我已将代码放入我的控制器函数中:
$session = Yii::$app->session;
unset($session['id']);
unset($session['timestamp']);
$session->destroy();
Run Code Online (Sandbox Code Playgroud)
它仅适用于我更改密码的浏览器.但不适用于所有浏览器.我检查了会话变量 - $session['id']
是否存在.即使我从不同的浏览器更改密码,我也可以看到它存在于其他浏览器中.
从 Laravel 5.3 开始,这个中间件被添加了......
\Illuminate\Session\Middleware\AuthenticateSession
虽然出于安全目的这绝对是一个好处,但它也负责在用户更改密码时注销用户(向用户显示登录页面)。
在 Laravel 5.5 中,我们如何防止用户在更改密码时被注销(被迫重新登录)?
php change-password laravel laravel-5.5 laravel-authentication
目前,这就是在用户配置文件中更改密码的方式。在知道不涉及模型的情况下,将其转换为基于类的视图的最佳方法是什么?
这是修改密码的视图
@login_required
def profile_change_password(request):
"""
Change password of user.
"""
user = get_object_or_404(User, username__iexact=request.user.username)
if request.method == 'POST':
form = PasswordChangeFormPrivate(user=user, data=request.POST)
if form.is_valid():
form.save()
messages.add_message (request, messages.INFO,
_('password changed'))
return HttpResponseRedirect(reverse('profile_view_details'))
else:
form = PasswordChangeFormPrivate(user=request.user)
return render_to_response('profiles/profile_change_password.html',
{ 'form': form,},
context_instance=RequestContext(request)
)
Run Code Online (Sandbox Code Playgroud)
这是更改密码的表格
class PasswordChangeFormPrivate(PasswordChangeForm):
def __init__(self, *args, **kwargs):
super(PasswordChangeForm, self).__init__(*args, **kwargs)
def clean_new_password2(self):
password1 = self.cleaned_data.get('new_password1')
password2 = self.cleaned_data.get('new_password2')
if password1 and password2:
if password1 != password2:
raise forms.ValidationError(_("The two password fields didn't match."))
min_len = getattr(settings, …
Run Code Online (Sandbox Code Playgroud) django change-password django-views django-class-based-views
我无法通过sonataadmin仪表板更新用户密码.
我使用symfony2 FosUserBundle2.0 SonataAdminBundle(但不使用SonataUserBundle)并按照文档进行操作.
MyUserBundle\Admin\UserAdmin.php
class UserAdmin像这样扩展Admin
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
......
->add('plainPassword', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
'required' => false,
)
)
..
}
Run Code Online (Sandbox Code Playgroud)
使用sonataadminbundle
仪表板创建新用户时没有问题,但是当我使用仪表板更新密码时,DB中的密码不会更改.
其他人可以更新但密码,我不知道为什么.没有任何错误信息.
我是symfony2的新手,有人帮我吗?
感谢kwozny,现在我修复它〜 我不改变函数configureFormFields代码,只需按照kwozny的建议,添加以下代码.我不知道为什么,但我工作!我可以更新密码,当我更新其他密码(密码字段为空)时,密码不会更改.
public function prePersist($object)
{
parent::prePersist($object);
}
public function preUpdate($object)
{
parent::preUpdate($object);
}
Run Code Online (Sandbox Code Playgroud) 我有一个在网站上自定义格式的password_change_form.html。我正在用我的模板覆盖 Django 默认模板。但是,它没有渲染我的模板。它只是渲染默认模板,如下所示。
我创建了一个自定义格式的模板
基本.html
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{% url 'password_change' %}">Change password</a>
<div class="dropdown-divider"></div>
Run Code Online (Sandbox Code Playgroud)
密码更改表单.html
{% extends 'home/base.html' %}
{% block body %}
<h2>
Change password
</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary">Change password</button>
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.contrib import admin
from django.urls import path, include
from Shopping.cart import urls
urlpatterns = [
path('', include('Shopping.cart.urls')),
path('accounts/', include('django.contrib.auth.urls')),
path('admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)
我想看到我的模板覆盖 Django 默认模板
解决了 我犯了一个错误,我将模板文件夹放在应用程序中。这是造成问题的原因。现在我将模板文件夹移动到项目文件夹中。现在一切正常。谢谢。
我已经能够创建 Azure Functions App 来管理 Azure B2C 用户。我可以使用 client_credentials Flow 创建新用户并完美更新配置文件。但是,当我使用带有正文的 PATCH 请求更改密码时:
{
passwordProfile: {
password: 'password-value',
forceChangePasswordNextSignIn: false
},
passwordPolicies: "DisablePasswordExpiration"
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
{code: 'Authorization_RequestDenied', message: 'Insufficient privileges to complete the operation.'}
Run Code Online (Sandbox Code Playgroud)
我对此做了一些研究,并发现更新密码需要委派权限“Directory.AccessAsUser.All”。在前端应用程序中,我使用 B2CLogin 流程登录,因此访问令牌与 Graph API 不兼容。此外,B2C 应用程序中的应用程序级别不存在“Directory.AccessAsUser.All”。因此,我也无法将补丁请求与 client_credentials 流程一起使用。根据一些建议,该过程可以通过 Azure AD PowerShell 通过分配“公司管理员”角色来完成。但是,我还没有找到通过Azure Function重置密码的解决方案。分步解决方案(如果存在)对我来说非常有帮助,因为我对 Azure 服务相对较新。
当用户的密码成功更改时,是否有办法在 Cognito 中触发通知电子邮件(发送给用户)?
change-password ×10
django ×2
php ×2
azure-ad-b2c ×1
django-forms ×1
django-views ×1
email ×1
ember.js ×1
java ×1
laravel ×1
laravel-5.5 ×1
ldap ×1
python ×1
session ×1
sonata-admin ×1
spring-mvc ×1
symfony ×1
yii2 ×1