我必须为我当前的ASP .Net项目创建一个自定义成员资格提供程序,以便适应我们的数据库架构,并且在配置它时如果他们的密码错误三次就会锁定用户时出现问题,这是由标准供应商.
这是我需要自己实现的东西,还是本来应该得到支持?
我没有专门处理它的代码(并且没有任何接口成员似乎专门处理它),但如果我需要自己实现它,我该如何通知用户他们被锁定?我需要在ValidateUser中引发某种异常吗?
解
惭愧我无法标记两个答案,Dave R提供的链接深入了解了会员的工作方式,Zhaph指出的是我最终做的事情,处理自定义会员提供商中的锁定逻辑.
然后,我使用Login控件的LoginError事件处理错误情况,并在那里检查以查看用户是否被锁定以显示相应的错误消息.
我目前正在开发一种系统,其功能是客户可以通过提供PIN"号码"查看其购买/续订/等的详细信息.
由于我们定位的客户类型,正在使用PIN而不是登录信息.PIN将打印在发送给他们的文档上.
提供PIN时显示的视图不会显示高度敏感的信息,如信用卡等,但不太敏感,如产品名称,类型,价格,条形码,维修等.
有问题的是PIN.我选择使用随机5个字符的PIN码(0-9,az AZ) - 区分大小写.我将删除一些同形字符('我','1','l','0','O','rn','vv'),所以组合的实际数量实际上更低.
我有几个问题:
我需要永久阻止用户.我不明白为什么这段代码不起作用.
此行UserManager.IsLockedOut(user.Id);总是返回false而不是true.
也许有必要将此行UserManager.UserLockoutEnabledByDefault = true;置于用户注册阶段?
using (var _db = new ApplicationDbContext())
{
UserStore<DALApplicationUser> UserStore = new UserStore<DALApplicationUser>(_db);
UserManager<DALApplicationUser> UserManager = new UserManager<DALApplicationUser>(UserStore);
UserManager.UserLockoutEnabledByDefault = true;
DALApplicationUser user = _userService.GetUserByProfileId(id);
bool a = UserManager.IsLockedOut(user.Id);
UserManager.SetLockoutEnabled(user.Id, true);
a = UserManager.IsLockedOut(user.Id);
_db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud) 我希望我的Java应用在特定的超时后锁定Windows桌面。我有一个工作正常的计时器,但是我似乎无法执行命令来锁定工作站。
javax.swing.Timer tim = new javax.swing.Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("CARD NOT PRESENT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// LOCK SCREEN
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("%windir%/System32/rundll32.exe user32.dll,LockWorkStation");
}
});
Run Code Online (Sandbox Code Playgroud)
这有什么错误吗?或者,也许更简单的方法可以做到这一点?