我正在使用ASP.Net SqlMembershipProvider来管理我的用户.这是我的配置:
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="SiteDatabase"
applicationName="WPR"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed" />
</providers>
</membership>
Run Code Online (Sandbox Code Playgroud)
我的问题是:当我调用Membership.CreateUser来创建新用户时,密码以散列格式存储在数据库中,并带有一个盐 - 这一切都很好.但是,当我在管理功能中调用Membership.ChangePassword时,它以纯文本格式存储密码.我真的无法理解这种行为,因为配置清楚地说"Hashed"并且创建新用户会创建一个哈希密码.
这让我发疯,它正在工作,我不知道发生了什么变化,但现在我的登录页面上出现无限重定向循环(301),日志显示 AccessDeniedException。显然我已经检查了许多 StackOverflow 答案和其他互联网链接,但我看不出我的设置有什么问题:
安全.yaml:
security:
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
providers:
app_user_provider:
entity:
class: App\Entity\Users
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
customer:
pattern: ^/customer
security: false
main:
pattern: ^/
lazy: true
provider: app_user_provider
form_login:
login_path: login
check_path: login
enable_csrf: true
logout:
path: logout
target: /login
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: …Run Code Online (Sandbox Code Playgroud)